Skip to content

Instantly share code, notes, and snippets.

@ashvardanian
Created January 16, 2024 19:11
Show Gist options
  • Save ashvardanian/cec868c9d00288c40cff0644ea4b5450 to your computer and use it in GitHub Desktop.
Save ashvardanian/cec868c9d00288c40cff0644ea4b5450 to your computer and use it in GitHub Desktop.
StringZilla pre-v3 benchmarks on AWS Graviton 3
~/StringZilla$ ./build_release/stringzilla_bench_search leipzig1M.txt
StringZilla. Starting search benchmarks.
Parsed the file with 8388608 words of 5 mean length!
Benchmarking for whitespaces:
- std::string_view.find_first_of 0.1882 GB/s 356648820.2 ns 0 errors in 32 iterations
- sz_find_from_set_serial 0.2286 GB/s 293561982.7 ns 0 errors in 36 iterations
- sz_find_from_set_neon 0.2289 GB/s 293157591.5 ns 0 errors in 36 iterations
- strcspn 0.2956 GB/s 226998443.9 ns 0 errors in 48 iterations
- std::string_view.find_last_of 0.2117 GB/s 317041158.2 ns 0 errors in 32 iterations
- sz_find_last_from_set_serial 0.2333 GB/s 287684198.9 ns 0 errors in 36 iterations
- sz_find_last_from_set_neon 0.2328 GB/s 288287036.8 ns 0 errors in 36 iterations
Benchmarking for punctuation marks:
- std::string_view.find_first_of 0.2701 GB/s 248465327.3 ns 0 errors in 44 iterations
- sz_find_from_set_serial 0.4586 GB/s 146344545.9 ns 0 errors in 72 iterations
- sz_find_from_set_neon 0.4588 GB/s 146267168.8 ns 0 errors in 72 iterations
- strcspn 0.9153 GB/s 73317147.8 ns 0 errors in 140 iterations
- std::string_view.find_last_of 0.2700 GB/s 248545729.2 ns 0 errors in 44 iterations
- sz_find_last_from_set_serial 0.4836 GB/s 138775380.5 ns 0 errors in 76 iterations
- sz_find_last_from_set_neon 0.4838 GB/s 138719226.3 ns 0 errors in 76 iterations
Benchmarking for non-printable characters:
- std::string_view.find_first_of 5063684.4618 GB/s 13.3 ns 0 errors in 754547788 iterations
- sz_find_from_set_serial 1.5297 GB/s 43869292.8 ns 0 errors in 228 iterations
- sz_find_from_set_neon 1.5297 GB/s 43869461.8 ns 0 errors in 228 iterations
- strcspn 20.4920 GB/s 3274885.6 ns 0 errors in 3056 iterations
- std::string_view.find_last_of 5476819.7748 GB/s 12.3 ns 0 errors in 816109744 iterations
- sz_find_last_from_set_serial 1.5375 GB/s 43649069.1 ns 0 errors in 232 iterations
- sz_find_last_from_set_neon 1.5374 GB/s 43651281.0 ns 0 errors in 232 iterations
Benchmarking on real words:
- std::string_view.find 1.5632 GB/s 42931636.9 ns 0 errors in 236 iterations
- sz_find_serial 1.3839 GB/s 48491260.5 ns 0 errors in 208 iterations
- sz_find_neon 7.4272 GB/s 9035504.2 ns 0 errors in 1108 iterations
- strstr 1.9860 GB/s 33790445.9 ns 0 errors in 296 iterations
- memmem 2.2642 GB/s 29638921.6 ns 0 errors in 340 iterations
- std::search 1.6909 GB/s 39687851.0 ns 0 errors in 252 iterations
- std::search<BM> 0.5499 GB/s 122029113.3 ns 0 errors in 84 iterations
- std::search<BMH> 0.6296 GB/s 106585125.1 ns 0 errors in 96 iterations
- std::string_view.rfind 0.4143 GB/s 161968880.8 ns 0 errors in 64 iterations
- sz_find_last_serial 1.1473 GB/s 58492408.2 ns 0 errors in 172 iterations
- sz_find_last_neon 6.9767 GB/s 9618969.7 ns 0 errors in 1048 iterations
- std::search 0.9859 GB/s 68068402.5 ns 0 errors in 148 iterations
- std::search<BM> 0.4555 GB/s 147340680.6 ns 0 errors in 72 iterations
- std::search<BMH> 0.5656 GB/s 118651183.9 ns 0 errors in 88 iterations
Benchmarking on real words of length 1:
- std::string_view.find 0.9257 GB/s 72498275.0 ns 0 errors in 140 iterations
- sz_find_serial 0.7222 GB/s 92919689.8 ns 0 errors in 112 iterations
- sz_find_neon 1.0190 GB/s 65855332.9 ns 0 errors in 152 iterations
- strstr 0.9117 GB/s 73605771.5 ns 0 errors in 136 iterations
- memmem 0.9619 GB/s 69767005.3 ns 0 errors in 144 iterations
- std::search 1.1135 GB/s 60270611.6 ns 0 errors in 168 iterations
- std::search<BM> 0.1091 GB/s 615296612.6 ns 0 errors in 20 iterations
- std::search<BMH> 0.1160 GB/s 578520792.4 ns 0 errors in 20 iterations
- std::string_view.rfind 0.3571 GB/s 187916858.7 ns 0 errors in 56 iterations
- sz_find_last_serial 0.7622 GB/s 88042737.1 ns 0 errors in 116 iterations
- sz_find_last_neon 0.9934 GB/s 67554638.5 ns 0 errors in 152 iterations
- std::search 0.7904 GB/s 84903694.2 ns 0 errors in 120 iterations
- std::search<BM> 0.0980 GB/s 684895501.1 ns 0 errors in 16 iterations
- std::search<BMH> 0.1064 GB/s 630627450.9 ns 0 errors in 20 iterations
Benchmarking on real words of length 2:
- std::string_view.find 1.1235 GB/s 59731558.9 ns 0 errors in 168 iterations
- sz_find_serial 2.6523 GB/s 25301693.1 ns 0 errors in 396 iterations
- sz_find_neon 4.5544 GB/s 14735008.8 ns 0 errors in 680 iterations
- strstr 1.2921 GB/s 51937891.8 ns 0 errors in 196 iterations
- memmem 1.2378 GB/s 54216583.9 ns 0 errors in 188 iterations
- std::search 1.3689 GB/s 49025322.6 ns 0 errors in 204 iterations
- std::search<BM> 0.3050 GB/s 219996520.1 ns 0 errors in 48 iterations
- std::search<BMH> 0.3585 GB/s 187217758.0 ns 0 errors in 56 iterations
- std::string_view.rfind 0.3725 GB/s 180166000.2 ns 0 errors in 56 iterations
- sz_find_last_serial 1.0584 GB/s 63404022.1 ns 0 errors in 160 iterations
- sz_find_last_neon 4.4253 GB/s 15164683.8 ns 0 errors in 660 iterations
- std::search 0.9381 GB/s 71536316.1 ns 0 errors in 140 iterations
- std::search<BM> 0.2544 GB/s 263835475.2 ns 0 errors in 40 iterations
- std::search<BMH> 0.3214 GB/s 208772667.9 ns 0 errors in 48 iterations
Benchmarking on real words of length 3:
- std::string_view.find 1.2723 GB/s 52746496.7 ns 0 errors in 192 iterations
- sz_find_serial 1.1216 GB/s 59831307.6 ns 0 errors in 168 iterations
- sz_find_neon 6.1232 GB/s 10959844.7 ns 0 errors in 916 iterations
- strstr 1.2028 GB/s 55793399.8 ns 0 errors in 180 iterations
- memmem 1.5399 GB/s 43579304.7 ns 0 errors in 232 iterations
- std::search 1.4762 GB/s 45459484.2 ns 0 errors in 220 iterations
- std::search<BM> 0.4510 GB/s 148800317.0 ns 0 errors in 72 iterations
- std::search<BMH> 0.5503 GB/s 121954496.8 ns 0 errors in 84 iterations
- std::string_view.rfind 0.3699 GB/s 181446826.8 ns 0 errors in 56 iterations
- sz_find_last_serial 1.1090 GB/s 60515049.4 ns 0 errors in 168 iterations
- sz_find_last_neon 5.8513 GB/s 11469085.6 ns 0 errors in 872 iterations
- std::search 0.8298 GB/s 80871701.9 ns 0 errors in 128 iterations
- std::search<BM> 0.3804 GB/s 176428516.5 ns 0 errors in 60 iterations
- std::search<BMH> 0.4897 GB/s 137052717.7 ns 0 errors in 76 iterations
Benchmarking on real words of length 4:
- std::string_view.find 2.0283 GB/s 33086821.8 ns 0 errors in 304 iterations
- sz_find_serial 2.3921 GB/s 28054782.7 ns 0 errors in 360 iterations
- sz_find_neon 11.1391 GB/s 6024611.1 ns 0 errors in 1660 iterations
- strstr 2.2078 GB/s 30395726.4 ns 0 errors in 332 iterations
- memmem 2.6038 GB/s 25773594.9 ns 0 errors in 392 iterations
- std::search 1.9288 GB/s 34792464.7 ns 0 errors in 288 iterations
- std::search<BM> 0.7191 GB/s 93319094.9 ns 0 errors in 108 iterations
- std::search<BMH> 0.9197 GB/s 72965224.9 ns 0 errors in 140 iterations
- std::string_view.rfind 0.4396 GB/s 152673823.3 ns 0 errors in 68 iterations
- sz_find_last_serial 1.2098 GB/s 55469454.5 ns 0 errors in 184 iterations
- sz_find_last_neon 10.3071 GB/s 6510947.4 ns 0 errors in 1536 iterations
- std::search 0.9568 GB/s 70136704.7 ns 0 errors in 144 iterations
- std::search<BM> 0.5861 GB/s 114502122.6 ns 0 errors in 88 iterations
- std::search<BMH> 0.7938 GB/s 84538306.2 ns 0 errors in 120 iterations
Benchmarking on real words of length 5:
- std::string_view.find 2.1249 GB/s 31581453.2 ns 0 errors in 320 iterations
- sz_find_serial 1.2609 GB/s 53223606.6 ns 0 errors in 188 iterations
- sz_find_neon 12.0859 GB/s 5552656.0 ns 0 errors in 1804 iterations
- strstr 2.8480 GB/s 23563149.9 ns 0 errors in 428 iterations
- memmem 3.3871 GB/s 19812897.2 ns 0 errors in 508 iterations
- std::search 2.0391 GB/s 32910759.9 ns 0 errors in 308 iterations
- std::search<BM> 0.9124 GB/s 73549986.3 ns 0 errors in 140 iterations
- std::search<BMH> 1.1839 GB/s 56682890.8 ns 0 errors in 180 iterations
- std::string_view.rfind 0.4439 GB/s 151194761.6 ns 0 errors in 68 iterations
- sz_find_last_serial 1.1979 GB/s 56024304.8 ns 0 errors in 180 iterations
- sz_find_last_neon 11.0592 GB/s 6068166.0 ns 0 errors in 1652 iterations
- std::search 1.0375 GB/s 64685196.5 ns 0 errors in 156 iterations
- std::search<BM> 0.7414 GB/s 90517620.0 ns 0 errors in 112 iterations
- std::search<BMH> 1.0118 GB/s 66326012.4 ns 0 errors in 152 iterations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment