add unit test & benchmark
add unit test & benchmark