Skip to content

Instantly share code, notes, and snippets.

@Mytherin
Last active July 26, 2021 08:39
Show Gist options
  • Save Mytherin/60ffdb9960588cb0a9e95c99ee0efb3f to your computer and use it in GitHub Desktop.
Save Mytherin/60ffdb9960588cb0a9e95c99ee0efb3f to your computer and use it in GitHub Desktop.
Benchmark results for casts with and without __builtin_expect
M1 Mac clang++
master branch (throw exception instead of setting an error flag)
benchmark/micro/cast/cast_int32_int64_x.benchmark 1 0.053170
benchmark/micro/cast/cast_int32_int64_x.benchmark 2 0.053137
benchmark/micro/cast/cast_int32_int64_x.benchmark 3 0.053495
benchmark/micro/cast/cast_int32_int64_x.benchmark 4 0.055435
benchmark/micro/cast/cast_int32_int64_x.benchmark 5 0.052032
benchmark/micro/cast/cast_int64_int32_x.benchmark 1 0.168896
benchmark/micro/cast/cast_int64_int32_x.benchmark 2 0.168962
benchmark/micro/cast/cast_int64_int32_x.benchmark 3 0.168758
benchmark/micro/cast/cast_int64_int32_x.benchmark 4 0.170950
benchmark/micro/cast/cast_int64_int32_x.benchmark 5 0.168564
trycast branch
__builtin_expect
benchmark/micro/cast/cast_int32_int64.benchmark 1 0.056601
benchmark/micro/cast/cast_int32_int64.benchmark 2 0.056900
benchmark/micro/cast/cast_int32_int64.benchmark 3 0.056859
benchmark/micro/cast/cast_int32_int64.benchmark 4 0.056919
benchmark/micro/cast/cast_int32_int64.benchmark 5 0.057094
benchmark/micro/cast/cast_int64_int32.benchmark 1 0.173215
benchmark/micro/cast/cast_int64_int32.benchmark 2 0.174809
benchmark/micro/cast/cast_int64_int32.benchmark 3 0.174509
benchmark/micro/cast/cast_int64_int32.benchmark 4 0.173511
benchmark/micro/cast/cast_int64_int32.benchmark 5 0.174145
no __builtin_expect
benchmark/micro/cast/cast_int32_int64.benchmark 1 0.069028
benchmark/micro/cast/cast_int32_int64.benchmark 2 0.065139
benchmark/micro/cast/cast_int32_int64.benchmark 3 0.068108
benchmark/micro/cast/cast_int32_int64.benchmark 4 0.067585
benchmark/micro/cast/cast_int32_int64.benchmark 5 0.066211
benchmark/micro/cast/cast_int64_int32.benchmark 1 0.238367
benchmark/micro/cast/cast_int64_int32.benchmark 2 0.260469
benchmark/micro/cast/cast_int64_int32.benchmark 3 0.259206
benchmark/micro/cast/cast_int64_int32.benchmark 4 0.255899
benchmark/micro/cast/cast_int64_int32.benchmark 5 0.248581
manual reorder branches
benchmark/micro/cast/cast_int32_int64.benchmark 1 0.063287
benchmark/micro/cast/cast_int32_int64.benchmark 2 0.073349
benchmark/micro/cast/cast_int32_int64.benchmark 3 0.061011
benchmark/micro/cast/cast_int32_int64.benchmark 4 0.060198
benchmark/micro/cast/cast_int32_int64.benchmark 5 0.059801
benchmark/micro/cast/cast_int64_int32.benchmark 1 0.189303
benchmark/micro/cast/cast_int64_int32.benchmark 2 0.189628
benchmark/micro/cast/cast_int64_int32.benchmark 3 0.190258
benchmark/micro/cast/cast_int64_int32.benchmark 4 0.190153
benchmark/micro/cast/cast_int64_int32.benchmark 5 0.190007
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment