taleinat / byteshift_strstr Goto Github PK
View Code? Open in Web Editor NEWSimple and fast drop-in replacements for the stdlib's strstr() and memmem() sub-sequence search functions.
License: MIT License
Simple and fast drop-in replacements for the stdlib's strstr() and memmem() sub-sequence search functions.
License: MIT License
@taleinat thought maybe you might be interested on another benchmark run.
Arch Linux: Intel® Core™ i3-2310M CPU @ 2.10GHz × 4 Memory: 3.8 GiB
Seem strstr
is quite a bit faster than what you measured.
benchmarking 147277/strstr()
mean: 3.728909 ms you reported: 19.8 ms
benchmarking 147277/byteshift_strstr()
mean: 25.58909 ms you reported: 15.0 ms
[user@evo benchmark]$ ./benchmark
warming up
estimating clock resolution...
mean is 1.342729 us (640001 iterations)
found 3530 outliers among 639999 samples (0.6%)
2052 (0.3%) high severe
estimating cost of a clock call...
mean is 52.66098 ns (8 iterations)
benchmarking 10/strstr()
mean: 2.708128 us, lb 2.673099 us, ub 2.762792 us, ci 0.950
std dev: 220.3285 ns, lb 158.2793 ns, ub 298.3477 ns, ci 0.950
found 16 outliers among 100 samples (16.0%)
7 (7.0%) high mild
9 (9.0%) high severe
variance introduced by outliers: 71.742%
variance is severely inflated by outliers
benchmarking 10/fast_strstr()
mean: 2.756895 us, lb 2.749841 us, ub 2.766130 us, ci 0.950
std dev: 41.17383 ns, lb 33.33731 ns, ub 54.27227 ns, ci 0.950
found 5 outliers among 100 samples (5.0%)
4 (4.0%) high mild
1 (1.0%) high severe
variance introduced by outliers: 7.552%
variance is slightly inflated by outliers
benchmarking 10/byteshift_strstr()
mean: 2.714543 us, lb 2.706418 us, ub 2.724957 us, ci 0.950
std dev: 47.14232 ns, lb 38.28882 ns, ub 58.33500 ns, ci 0.950
found 5 outliers among 100 samples (5.0%)
5 (5.0%) high mild
variance introduced by outliers: 10.373%
variance is moderately inflated by outliers
benchmarking 10/naive strstr()
mean: 9.548341 us, lb 9.524516 us, ub 9.586556 us, ci 0.950
std dev: 150.8782 ns, lb 106.6101 ns, ub 243.9110 ns, ci 0.950
found 6 outliers among 100 samples (6.0%)
4 (4.0%) high mild
2 (2.0%) high severe
variance introduced by outliers: 8.493%
variance is slightly inflated by outliers
benchmarking 10/Volnitsky's strstr()
mean: 292.9906 us, lb 292.5453 us, ub 293.5519 us, ci 0.950
std dev: 2.553702 us, lb 2.008846 us, ub 3.508563 us, ci 0.950
benchmarking 100/strstr()
mean: 4.900097 us, lb 4.886682 us, ub 4.919300 us, ci 0.950
std dev: 81.39637 ns, lb 63.08813 ns, ub 116.7420 ns, ci 0.950
found 7 outliers among 100 samples (7.0%)
5 (5.0%) high mild
2 (2.0%) high severe
variance introduced by outliers: 9.434%
variance is slightly inflated by outliers
benchmarking 100/fast_strstr()
mean: 7.325504 us, lb 7.300511 us, ub 7.398019 us, ci 0.950
std dev: 199.5341 ns, lb 85.85720 ns, ub 432.0731 ns, ci 0.950
found 6 outliers among 100 samples (6.0%)
3 (3.0%) high mild
3 (3.0%) high severe
variance introduced by outliers: 21.886%
variance is moderately inflated by outliers
benchmarking 100/byteshift_strstr()
mean: 8.835791 us, lb 8.820650 us, ub 8.853719 us, ci 0.950
std dev: 84.25195 ns, lb 72.10566 ns, ub 102.1634 ns, ci 0.950
benchmarking 100/naive strstr()
mean: 117.2439 us, lb 117.0440 us, ub 117.4913 us, ci 0.950
std dev: 1.131590 us, lb 952.2153 ns, ub 1.507388 us, ci 0.950
benchmarking 100/Volnitsky's strstr()
mean: 296.0453 us, lb 295.7177 us, ub 296.3223 us, ci 0.950
std dev: 1.540553 us, lb 1.268294 us, ub 1.966355 us, ci 0.950
benchmarking 500/strstr()
mean: 10.44929 us, lb 10.42723 us, ub 10.47691 us, ci 0.950
std dev: 127.2079 ns, lb 105.2664 ns, ub 155.7071 ns, ci 0.950
benchmarking 500/fast_strstr()
mean: 47.88492 us, lb 47.76298 us, ub 48.05505 us, ci 0.950
std dev: 732.5680 ns, lb 573.0153 ns, ub 944.5384 ns, ci 0.950
found 10 outliers among 100 samples (10.0%)
5 (5.0%) high mild
5 (5.0%) high severe
variance introduced by outliers: 8.459%
variance is slightly inflated by outliers
benchmarking 500/byteshift_strstr()
mean: 77.45291 us, lb 76.69766 us, ub 78.72633 us, ci 0.950
std dev: 4.930864 us, lb 3.314176 us, ub 7.051583 us, ci 0.950
found 9 outliers among 100 samples (9.0%)
8 (8.0%) high severe
variance introduced by outliers: 60.518%
variance is severely inflated by outliers
benchmarking 500/naive strstr()
mean: 528.2449 us, lb 525.6831 us, ub 534.4736 us, ci 0.950
std dev: 19.25845 us, lb 9.756960 us, ub 38.84756 us, ci 0.950
found 9 outliers among 100 samples (9.0%)
5 (5.0%) high mild
4 (4.0%) high severe
variance introduced by outliers: 32.641%
variance is moderately inflated by outliers
benchmarking 500/Volnitsky's strstr()
mean: 329.8826 us, lb 329.4615 us, ub 330.4581 us, ci 0.950
std dev: 2.487012 us, lb 1.773679 us, ub 3.678654 us, ci 0.950
benchmarking 1000/strstr()
mean: 18.02276 us, lb 17.97584 us, ub 18.08230 us, ci 0.950
std dev: 269.7681 ns, lb 223.8934 ns, ub 354.7600 ns, ci 0.950
found 6 outliers among 100 samples (6.0%)
5 (5.0%) high mild
1 (1.0%) high severe
variance introduced by outliers: 7.554%
variance is slightly inflated by outliers
benchmarking 1000/fast_strstr()
mean: 99.01369 us, lb 98.88137 us, ub 99.19233 us, ci 0.950
std dev: 785.4669 ns, lb 620.8176 ns, ub 991.0131 ns, ci 0.950
benchmarking 1000/byteshift_strstr()
mean: 160.5879 us, lb 160.4461 us, ub 160.7662 us, ci 0.950
std dev: 813.7083 ns, lb 677.5520 ns, ub 1.019874 us, ci 0.950
benchmarking 1000/naive strstr()
mean: 1.028052 ms, lb 1.026981 ms, ub 1.029283 ms, ci 0.950
std dev: 5.857890 us, lb 5.030297 us, ub 6.859681 us, ci 0.950
benchmarking 1000/Volnitsky's strstr()
mean: 386.6976 us, lb 386.3203 us, ub 387.1017 us, ci 0.950
std dev: 2.003607 us, lb 1.698496 us, ub 2.417213 us, ci 0.950
benchmarking 5000/strstr()
mean: 96.78975 us, lb 96.52238 us, ub 97.10344 us, ci 0.950
std dev: 1.482696 us, lb 1.264450 us, ub 1.831472 us, ci 0.950
found 2 outliers among 100 samples (2.0%)
2 (2.0%) high mild
variance introduced by outliers: 8.461%
variance is slightly inflated by outliers
benchmarking 5000/fast_strstr()
mean: 510.0051 us, lb 509.4464 us, ub 510.6965 us, ci 0.950
std dev: 3.183432 us, lb 2.649276 us, ub 3.977548 us, ci 0.950
benchmarking 5000/byteshift_strstr()
mean: 858.7085 us, lb 858.0636 us, ub 859.4667 us, ci 0.950
std dev: 3.569251 us, lb 3.003381 us, ub 4.310548 us, ci 0.950
benchmarking 5000/naive strstr()
mean: 5.163309 ms, lb 5.156553 ms, ub 5.170378 ms, ci 0.950
std dev: 35.52820 us, lb 32.44935 us, ub 39.21530 us, ci 0.950
benchmarking 5000/Volnitsky's strstr()
mean: 822.5678 us, lb 821.8025 us, ub 823.4142 us, ci 0.950
std dev: 4.123345 us, lb 3.566370 us, ub 4.831413 us, ci 0.950
benchmarking 10000/strstr()
mean: 214.2851 us, lb 213.8281 us, ub 214.8246 us, ci 0.950
std dev: 2.538493 us, lb 2.167489 us, ub 3.211782 us, ci 0.950
benchmarking 10000/fast_strstr()
mean: 1.021968 ms, lb 1.020847 ms, ub 1.023328 ms, ci 0.950
std dev: 6.315193 us, lb 5.298805 us, ub 7.904370 us, ci 0.950
benchmarking 10000/byteshift_strstr()
mean: 1.731448 ms, lb 1.730037 ms, ub 1.733112 ms, ci 0.950
std dev: 7.825432 us, lb 6.616911 us, ub 9.776681 us, ci 0.950
benchmarking 10000/naive strstr()
mean: 10.31374 ms, lb 10.30594 ms, ub 10.32223 ms, ci 0.950
std dev: 41.75419 us, lb 36.56924 us, ub 49.84446 us, ci 0.950
benchmarking 10000/Volnitsky's strstr()
mean: 1.460449 ms, lb 1.458785 ms, ub 1.463773 ms, ci 0.950
std dev: 11.61156 us, lb 7.093593 us, ub 22.12238 us, ci 0.950
benchmarking 50000/strstr()
mean: 1.288234 ms, lb 1.286148 ms, ub 1.291983 ms, ci 0.950
std dev: 13.95382 us, lb 9.277934 us, ub 26.08445 us, ci 0.950
benchmarking 50000/fast_strstr()
mean: 5.123448 ms, lb 5.115344 ms, ub 5.151670 ms, ci 0.950
std dev: 69.36365 us, lb 21.46940 us, ub 157.5431 us, ci 0.950
found 2 outliers among 100 samples (2.0%)
1 (1.0%) high severe
variance introduced by outliers: 6.582%
variance is slightly inflated by outliers
benchmarking 50000/byteshift_strstr()
mean: 8.675017 ms, lb 8.671019 ms, ub 8.679297 ms, ci 0.950
std dev: 21.21519 us, lb 19.18680 us, ub 24.08174 us, ci 0.950
benchmarking 50000/naive strstr()
collecting 100 samples, 1 iterations each, in estimated 5.129600 s
mean: 51.38677 ms, lb 51.37028 ms, ub 51.40464 ms, ci 0.950
std dev: 88.49298 us, lb 78.33662 us, ub 103.0797 us, ci 0.950
benchmarking 50000/Volnitsky's strstr()
mean: 12.32932 ms, lb 12.32308 ms, ub 12.33945 ms, ci 0.950
std dev: 39.88579 us, lb 27.18148 us, ub 66.22963 us, ci 0.950
benchmarking 147277/strstr()
mean: 3.728909 ms, lb 3.724334 ms, ub 3.734031 ms, ci 0.950
std dev: 24.77871 us, lb 22.02433 us, ub 28.48209 us, ci 0.950
benchmarking 147277/fast_strstr()
mean: 15.06750 ms, lb 15.05995 ms, ub 15.07723 ms, ci 0.950
std dev: 43.59185 us, lb 34.46370 us, ub 61.91236 us, ci 0.950
benchmarking 147277/byteshift_strstr()
mean: 25.58909 ms, lb 25.58190 ms, ub 25.59647 ms, ci 0.950
std dev: 37.48404 us, lb 33.32963 us, ub 42.78451 us, ci 0.950
benchmarking 147277/naive strstr()
collecting 100 samples, 1 iterations each, in estimated 15.11931 s
mean: 151.1214 ms, lb 151.1014 ms, ub 151.1464 ms, ci 0.950
std dev: 114.1523 us, lb 92.17544 us, ub 153.5330 us, ci 0.950
benchmarking 147277/Volnitsky's strstr()
collecting 100 samples, 1 iterations each, in estimated 8.521295 s
mean: 85.16237 ms, lb 85.12735 ms, ub 85.21613 ms, ci 0.950
std dev: 219.0808 us, lb 158.0000 us, ub 307.9950 us, ci 0.950
[user@evo benchmark]$
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.