Skip to content

Instantly share code, notes, and snippets.

@EricWF
Last active December 11, 2018 00:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EricWF/a77fd42ec87fc98da8039e26d0349498 to your computer and use it in GitHub Desktop.
Save EricWF/a77fd42ec87fc98da8039e26d0349498 to your computer and use it in GitHub Desktop.
The results of comparing the old and new std::function implementation. (Run 5 times each for 1 second).
name old time/op new time/op delta
====================================================================================================================================
BM_ConstructAndDestroy_Null_Opaque 0.72ns ± 0% 0.72ns ± 0% ~ (p=0.167 n=5+5)
BM_ConstructAndDestroy_FuncPtr_Opaque 2.51ns ± 0% 2.15ns ± 0% -14.37% (p=0.000 n=5+4)
BM_ConstructAndDestroy_MemFuncPtr_Opaque 2.87ns ± 0% 2.15ns ± 0% -25.07% (p=0.008 n=5+5)
BM_ConstructAndDestroy_MemPtr_Opaque 2.51ns ± 0% 2.15ns ± 0% -14.35% (p=0.008 n=5+5)
BM_ConstructAndDestroy_SmallTrivialFunctor_Opaque 2.51ns ± 0% 0.72ns ± 0% -71.45% (p=0.008 n=5+5)
BM_ConstructAndDestroy_SmallNonTrivialFunctor_Opaque 20.8ns ± 0% 20.4ns ± 0% -1.78% (p=0.008 n=5+5)
BM_ConstructAndDestroy_LargeTrivialFunctor_Opaque 23.2ns ± 0% 23.4ns ± 0% +0.79% (p=0.008 n=5+5)
BM_ConstructAndDestroy_LargeNonTrivialFunctor_Opaque 20.8ns ± 0% 21.7ns ± 0% +4.35% (p=0.008 n=5+5)
BM_ConstructAndDestroy_Null_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_FuncPtr_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_MemFuncPtr_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_MemPtr_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_SmallTrivialFunctor_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_SmallNonTrivialFunctor_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_LargeTrivialFunctor_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_ConstructAndDestroy_LargeNonTrivialFunctor_Transparent 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_Copy_Null 1.43ns ± 0% 1.43ns ± 0% ~ (p=0.119 n=5+5)
BM_Copy_FuncPtr 4.31ns ± 1% 1.43ns ± 0% -66.82% (p=0.008 n=5+5)
BM_Copy_MemFuncPtr 4.33ns ± 2% 1.55ns ± 8% -64.21% (p=0.008 n=5+5)
BM_Copy_MemPtr 4.30ns ± 0% 1.43ns ± 0% -66.71% (p=0.008 n=5+5)
BM_Copy_SmallTrivialFunctor 4.44ns ± 2% 1.67ns ±23% -62.27% (p=0.008 n=5+5)
BM_Copy_SmallNonTrivialFunctor 21.7ns ± 0% 21.7ns ± 0% ~ (p=0.841 n=5+5)
BM_Copy_LargeTrivialFunctor 24.2ns ± 0% 24.7ns ± 0% +2.18% (p=0.008 n=5+5)
BM_Copy_LargeNonTrivialFunctor 21.8ns ± 0% 21.9ns ± 0% +0.55% (p=0.008 n=5+5)
BM_Move_Null 1.98ns ± 0% 2.51ns ± 0% +26.84% (p=0.008 n=5+5)
BM_Move_FuncPtr 5.02ns ± 0% 2.51ns ± 0% -49.93% (p=0.008 n=5+5)
BM_Move_MemFuncPtr 5.02ns ± 0% 2.51ns ± 0% -49.92% (p=0.008 n=5+5)
BM_Move_MemPtr 5.02ns ± 0% 2.51ns ± 0% -49.91% (p=0.008 n=5+5)
BM_Move_SmallTrivialFunctor 5.38ns ± 0% 2.51ns ± 0% -53.27% (p=0.008 n=5+5)
BM_Move_SmallNonTrivialFunctor 2.65ns ± 0% 2.51ns ± 0% -5.29% (p=0.008 n=5+5)
BM_Move_LargeTrivialFunctor 2.65ns ± 0% 2.51ns ± 0% -5.29% (p=0.008 n=5+5)
BM_Move_LargeNonTrivialFunctor 2.65ns ± 0% 2.51ns ± 0% -5.29% (p=0.008 n=5+5)
BM_Swap_Null_Null 2.17ns ± 0% 2.40ns ± 0% +10.40% (p=0.008 n=5+5)
BM_Swap_Null_FuncPtr 4.12ns ± 0% 2.39ns ± 0% -42.02% (p=0.008 n=5+5)
BM_Swap_Null_MemFuncPtr 3.98ns ± 1% 2.43ns ± 1% -39.04% (p=0.008 n=5+5)
BM_Swap_Null_MemPtr 4.24ns ± 7% 2.39ns ± 0% -43.63% (p=0.008 n=5+5)
BM_Swap_Null_SmallTrivialFunctor 3.96ns ± 1% 2.39ns ± 0% -39.72% (p=0.008 n=5+5)
BM_Swap_Null_SmallNonTrivialFunctor 2.17ns ± 0% 2.40ns ± 1% +10.71% (p=0.008 n=5+5)
BM_Swap_Null_LargeTrivialFunctor 2.17ns ± 0% 2.39ns ± 0% +9.99% (p=0.008 n=5+5)
BM_Swap_Null_LargeNonTrivialFunctor 2.17ns ± 0% 2.40ns ± 0% +10.47% (p=0.008 n=5+5)
BM_Swap_FuncPtr_FuncPtr 10.9ns ± 0% 2.4ns ± 0% -77.99% (p=0.008 n=5+5)
BM_Swap_FuncPtr_MemFuncPtr 11.1ns ± 0% 2.4ns ± 0% -78.22% (p=0.008 n=5+5)
BM_Swap_FuncPtr_MemPtr 11.1ns ± 0% 2.4ns ± 0% -78.47% (p=0.008 n=5+5)
BM_Swap_FuncPtr_SmallTrivialFunctor 11.1ns ± 0% 2.4ns ± 0% -78.45% (p=0.008 n=5+5)
BM_Swap_FuncPtr_SmallNonTrivialFunctor 4.01ns ± 2% 2.39ns ± 1% -40.38% (p=0.008 n=5+5)
BM_Swap_FuncPtr_LargeTrivialFunctor 4.12ns ± 0% 2.40ns ± 0% -41.86% (p=0.008 n=5+5)
BM_Swap_FuncPtr_LargeNonTrivialFunctor 3.95ns ± 0% 2.39ns ± 0% -39.46% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_MemFuncPtr 11.1ns ± 0% 2.4ns ± 0% -78.44% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_MemPtr 11.1ns ± 0% 2.4ns ± 0% -78.51% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_SmallTrivialFunctor 11.1ns ± 0% 2.4ns ± 0% -78.12% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_SmallNonTrivialFunctor 4.05ns ± 3% 2.42ns ± 0% -40.12% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_LargeTrivialFunctor 4.12ns ± 0% 2.42ns ± 0% -41.14% (p=0.008 n=5+5)
BM_Swap_MemFuncPtr_LargeNonTrivialFunctor 4.09ns ± 5% 2.43ns ± 0% -40.54% (p=0.008 n=5+5)
BM_Swap_MemPtr_MemPtr 11.1ns ± 0% 2.4ns ± 0% -78.39% (p=0.008 n=5+5)
BM_Swap_MemPtr_SmallTrivialFunctor 11.1ns ± 0% 2.4ns ± 0% -78.46% (p=0.008 n=5+5)
BM_Swap_MemPtr_SmallNonTrivialFunctor 4.31ns ± 8% 2.40ns ± 0% -44.36% (p=0.008 n=5+5)
BM_Swap_MemPtr_LargeTrivialFunctor 4.05ns ± 3% 2.39ns ± 0% -41.04% (p=0.008 n=5+5)
BM_Swap_MemPtr_LargeNonTrivialFunctor 4.22ns ± 6% 2.40ns ± 0% -43.00% (p=0.008 n=5+5)
BM_Swap_SmallTrivialFunctor_SmallTrivialFunctor 10.9ns ± 0% 2.4ns ± 0% -78.10% (p=0.008 n=5+5)
BM_Swap_SmallTrivialFunctor_SmallNonTrivialFunctor 4.12ns ± 0% 2.41ns ± 0% -41.59% (p=0.008 n=5+5)
BM_Swap_SmallTrivialFunctor_LargeTrivialFunctor 4.12ns ± 0% 2.40ns ± 0% -41.78% (p=0.008 n=5+5)
BM_Swap_SmallTrivialFunctor_LargeNonTrivialFunctor 4.12ns ± 0% 2.39ns ± 1% -41.96% (p=0.008 n=5+5)
BM_Swap_SmallNonTrivialFunctor_SmallNonTrivialFunctor 2.22ns ± 0% 2.39ns ± 1% +7.64% (p=0.008 n=5+5)
BM_Swap_SmallNonTrivialFunctor_LargeTrivialFunctor 2.17ns ± 0% 2.39ns ± 0% +10.19% (p=0.008 n=5+5)
BM_Swap_SmallNonTrivialFunctor_LargeNonTrivialFunctor 2.17ns ± 0% 2.39ns ± 0% +9.93% (p=0.008 n=5+5)
BM_Swap_LargeTrivialFunctor_LargeTrivialFunctor 2.17ns ± 0% 2.40ns ± 0% +10.47% (p=0.008 n=5+5)
BM_Swap_LargeTrivialFunctor_LargeNonTrivialFunctor 2.22ns ± 0% 2.39ns ± 0% +7.49% (p=0.008 n=5+5)
BM_Swap_LargeNonTrivialFunctor_LargeNonTrivialFunctor 2.17ns ± 0% 2.39ns ± 0% +10.15% (p=0.008 n=5+5)
BM_OperatorBool_Null 0.38ns ± 0% 0.41ns ± 0% +8.87% (p=0.008 n=5+5)
BM_OperatorBool_FuncPtr 0.38ns ± 0% 0.41ns ± 0% +8.77% (p=0.008 n=5+5)
BM_OperatorBool_MemFuncPtr 0.38ns ± 0% 0.41ns ± 0% +8.60% (p=0.008 n=5+5)
BM_OperatorBool_MemPtr 0.38ns ± 0% 0.41ns ± 0% +8.66% (p=0.008 n=5+5)
BM_OperatorBool_SmallTrivialFunctor 0.38ns ± 0% 0.41ns ± 0% +8.66% (p=0.008 n=5+5)
BM_OperatorBool_SmallNonTrivialFunctor 0.38ns ± 0% 0.41ns ± 0% +8.93% (p=0.008 n=5+5)
BM_OperatorBool_LargeTrivialFunctor 0.38ns ± 0% 0.41ns ± 0% +9.03% (p=0.008 n=5+5)
BM_OperatorBool_LargeNonTrivialFunctor 0.38ns ± 0% 0.41ns ± 4% +10.15% (p=0.008 n=5+5)
BM_Invoke_FuncPtr 2.87ns ± 0% 2.51ns ± 0% -12.55% (p=0.008 n=5+5)
BM_Invoke_MemFuncPtr 3.22ns ± 0% 2.86ns ± 0% -11.17% (p=0.008 n=5+5)
BM_Invoke_MemPtr 1.79ns ± 0% 1.79ns ± 0% ~ (p=0.444 n=5+5)
BM_Invoke_SmallTrivialFunctor 1.79ns ± 0% 1.79ns ± 0% ~ (p=0.444 n=5+5)
BM_Invoke_SmallNonTrivialFunctor 2.15ns ± 0% 1.79ns ± 0% -16.71% (p=0.008 n=5+5)
BM_Invoke_LargeTrivialFunctor 1.79ns ± 0% 1.79ns ± 0% ~ (p=0.444 n=5+5)
BM_Invoke_LargeNonTrivialFunctor 2.15ns ± 0% 1.79ns ± 0% -16.71% (p=0.008 n=5+5)
BM_InvokeInlined_FuncPtr 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_MemFuncPtr 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_MemPtr 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_SmallTrivialFunctor 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_SmallNonTrivialFunctor 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_LargeTrivialFunctor 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
BM_InvokeInlined_LargeNonTrivialFunctor 0.00ns ±NaN% 0.00ns ±NaN% ~ (all samples are equal)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment