Created

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

Node redis benchmark, comparing hiredis and faster parsers. Running on Mac Mini.

View hiredis.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
Client count: 5, node version: 0.8.11, server version: 2.4.17, parser: hiredis
PING, 1/5 min/max/avg/p95: 0/ 4/ 0.08/ 1.00 1719ms total, 11634.67 ops/sec
PING, 50/5 min/max/avg/p95: 0/ 6/ 1.24/ 2.00 497ms total, 40241.45 ops/sec
PING, 200/5 min/max/avg/p95: 1/ 9/ 4.47/ 7.00 449ms total, 44543.43 ops/sec
PING, 20000/5 min/max/avg/p95: 49/ 440/ 250.05/ 397.65 457ms total, 43763.68 ops/sec
SET small str, 1/5 min/max/avg/p95: 0/ 3/ 0.09/ 1.00 1792ms total, 11160.71 ops/sec
SET small str, 50/5 min/max/avg/p95: 0/ 3/ 1.28/ 2.00 515ms total, 38834.95 ops/sec
SET small str, 200/5 min/max/avg/p95: 0/ 10/ 4.75/ 7.00 478ms total, 41841.00 ops/sec
SET small str, 20000/5 min/max/avg/p95: 50/ 653/ 355.20/ 596.65 674ms total, 29673.59 ops/sec
SET small buf, 1/5 min/max/avg/p95: 0/ 17/ 0.16/ 1.00 3355ms total, 5961.25 ops/sec
SET small buf, 50/5 min/max/avg/p95: 0/ 14/ 4.63/ 8.55 1854ms total, 10787.49 ops/sec
SET small buf, 200/5 min/max/avg/p95: 0/ 34/ 16.49/ 27.00 1657ms total, 12070.01 ops/sec
SET small buf, 20000/5 min/max/avg/p95: 165/1840/1041.17/1759.55 1855ms total, 10781.67 ops/sec
GET small str, 1/5 min/max/avg/p95: 0/ 1/ 0.08/ 1.00 1670ms total, 11976.05 ops/sec
GET small str, 50/5 min/max/avg/p95: 0/ 4/ 1.30/ 2.00 521ms total, 38387.72 ops/sec
GET small str, 200/5 min/max/avg/p95: 0/ 9/ 4.69/ 7.00 472ms total, 42372.88 ops/sec
GET small str, 20000/5 min/max/avg/p95: 57/ 485/ 269.05/ 441.00 495ms total, 40404.04 ops/sec
GET small buf, 1/5 min/max/avg/p95: 0/ 1/ 0.08/ 1.00 1658ms total, 12062.73 ops/sec
GET small buf, 50/5 min/max/avg/p95: 0/ 4/ 1.25/ 2.00 502ms total, 39840.64 ops/sec
GET small buf, 200/5 min/max/avg/p95: 1/ 9/ 4.73/ 7.00 475ms total, 42105.26 ops/sec
GET small buf, 20000/5 min/max/avg/p95: 49/ 480/ 262.44/ 432.00 505ms total, 39603.96 ops/sec
SET large str, 1/5 min/max/avg/p95: 0/ 3/ 0.10/ 1.00 2015ms total, 9925.56 ops/sec
SET large str, 50/5 min/max/avg/p95: 0/ 4/ 1.37/ 2.00 551ms total, 36297.64 ops/sec
SET large str, 200/5 min/max/avg/p95: 0/ 11/ 5.30/ 8.00 533ms total, 37523.45 ops/sec
SET large str, 20000/5 min/max/avg/p95: 108/ 704/ 407.49/ 649.00 714ms total, 28011.20 ops/sec
SET large buf, 1/5 min/max/avg/p95: 0/ 1/ 0.15/ 1.00 3089ms total, 6474.59 ops/sec
SET large buf, 50/5 min/max/avg/p95: 0/ 8/ 4.18/ 7.00 1675ms total, 11940.30 ops/sec
SET large buf, 200/5 min/max/avg/p95: 1/ 34/ 16.68/ 27.00 1676ms total, 11933.17 ops/sec
SET large buf, 20000/5 min/max/avg/p95: 172/2011/1125.51/1912.55 2022ms total, 9891.20 ops/sec
GET large str, 1/5 min/max/avg/p95: 0/ 4/ 0.09/ 1.00 1922ms total, 10405.83 ops/sec
GET large str, 50/5 min/max/avg/p95: 0/ 6/ 1.93/ 3.00 776ms total, 25773.20 ops/sec
GET large str, 200/5 min/max/avg/p95: 0/ 18/ 7.84/ 14.00 788ms total, 25380.71 ops/sec
GET large str, 20000/5 min/max/avg/p95: 441/ 583/ 509.28/ 553.00 953ms total, 20986.36 ops/sec
GET large buf, 1/5 min/max/avg/p95: 0/ 3/ 0.09/ 1.00 1919ms total, 10422.09 ops/sec
GET large buf, 50/5 min/max/avg/p95: 0/ 6/ 1.93/ 3.00 773ms total, 25873.22 ops/sec
GET large buf, 200/5 min/max/avg/p95: 0/ 18/ 7.72/ 14.00 777ms total, 25740.03 ops/sec
GET large buf, 20000/5 min/max/avg/p95: 394/ 612/ 505.81/ 572.10 950ms total, 21052.63 ops/sec
INCR, 1/5 min/max/avg/p95: 0/ 3/ 0.09/ 1.00 1824ms total, 10964.91 ops/sec
INCR, 50/5 min/max/avg/p95: 0/ 4/ 1.26/ 2.00 506ms total, 39525.69 ops/sec
INCR, 200/5 min/max/avg/p95: 0/ 10/ 4.83/ 8.00 485ms total, 41237.11 ops/sec
INCR, 20000/5 min/max/avg/p95: 61/ 519/ 298.92/ 473.10 530ms total, 37735.85 ops/sec
LPUSH, 1/5 min/max/avg/p95: 0/ 1/ 0.08/ 1.00 1687ms total, 11855.36 ops/sec
LPUSH, 50/5 min/max/avg/p95: 0/ 4/ 1.26/ 2.00 507ms total, 39447.73 ops/sec
LPUSH, 200/5 min/max/avg/p95: 0/ 9/ 4.72/ 7.00 474ms total, 42194.09 ops/sec
LPUSH, 20000/5 min/max/avg/p95: 47/ 472/ 260.64/ 427.00 482ms total, 41493.78 ops/sec
LRANGE 10, 1/5 min/max/avg/p95: 0/ 4/ 0.10/ 1.00 2059ms total, 9713.45 ops/sec
LRANGE 10, 50/5 min/max/avg/p95: 0/ 4/ 1.51/ 2.00 607ms total, 32948.93 ops/sec
LRANGE 10, 200/5 min/max/avg/p95: 0/ 11/ 5.64/ 9.00 567ms total, 35273.37 ops/sec
LRANGE 10, 20000/5 min/max/avg/p95: 79/ 600/ 334.45/ 540.00 628ms total, 31847.13 ops/sec
LRANGE 100, 1/5 min/max/avg/p95: 0/ 5/ 0.19/ 1.00 3816ms total, 5241.09 ops/sec
LRANGE 100, 50/5 min/max/avg/p95: 0/ 8/ 3.62/ 6.00 1449ms total, 13802.62 ops/sec
LRANGE 100, 200/5 min/max/avg/p95: 3/ 33/ 16.79/ 26.00 1684ms total, 11876.48 ops/sec
LRANGE 100, 20000/5 min/max/avg/p95: 470/2032/1745.02/1997.55 2315ms total, 8639.31 ops/sec
End of tests.
View hiredis.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
Client count: 5, node version: 0.8.11, server version: 2.4.17, parser: faster
PING, 1/5 min/max/avg/p95: 0/ 42/ 0.08/ 1.00 1734ms total, 11534.03 ops/sec
PING, 50/5 min/max/avg/p95: 0/ 6/ 1.14/ 2.00 455ms total, 43956.04 ops/sec
PING, 200/5 min/max/avg/p95: 1/ 9/ 4.31/ 7.00 433ms total, 46189.38 ops/sec
PING, 20000/5 min/max/avg/p95: 51/ 436/ 250.28/ 399.00 447ms total, 44742.73 ops/sec
SET small str, 1/5 min/max/avg/p95: 0/ 4/ 0.09/ 1.00 1786ms total, 11198.21 ops/sec
SET small str, 50/5 min/max/avg/p95: 0/ 3/ 1.22/ 2.00 489ms total, 40899.80 ops/sec
SET small str, 200/5 min/max/avg/p95: 1/ 9/ 4.56/ 7.00 458ms total, 43668.12 ops/sec
SET small str, 20000/5 min/max/avg/p95: 41/ 438/ 242.79/ 403.00 446ms total, 44843.05 ops/sec
SET small buf, 1/5 min/max/avg/p95: 0/ 4/ 0.14/ 1.00 2937ms total, 6809.67 ops/sec
SET small buf, 50/5 min/max/avg/p95: 0/ 9/ 4.03/ 6.00 1613ms total, 12399.26 ops/sec
SET small buf, 200/5 min/max/avg/p95: 0/ 33/ 15.89/ 26.00 1597ms total, 12523.48 ops/sec
SET small buf, 20000/5 min/max/avg/p95: 161/1808/1040.42/1733.00 1815ms total, 11019.28 ops/sec
GET small str, 1/5 min/max/avg/p95: 0/ 1/ 0.08/ 1.00 1740ms total, 11494.25 ops/sec
GET small str, 50/5 min/max/avg/p95: 0/ 3/ 1.28/ 2.00 513ms total, 38986.35 ops/sec
GET small str, 200/5 min/max/avg/p95: 0/ 10/ 4.83/ 8.00 486ms total, 41152.26 ops/sec
GET small str, 20000/5 min/max/avg/p95: 50/ 478/ 268.43/ 440.00 488ms total, 40983.61 ops/sec
GET small buf, 1/5 min/max/avg/p95: 0/ 1/ 0.08/ 1.00 1646ms total, 12150.67 ops/sec
GET small buf, 50/5 min/max/avg/p95: 0/ 4/ 1.29/ 2.00 518ms total, 38610.04 ops/sec
GET small buf, 200/5 min/max/avg/p95: 0/ 10/ 4.88/ 8.00 490ms total, 40816.33 ops/sec
GET small buf, 20000/5 min/max/avg/p95: 44/ 470/ 265.31/ 430.55 480ms total, 41666.67 ops/sec
SET large str, 1/5 min/max/avg/p95: 0/ 9/ 0.09/ 1.00 1930ms total, 10362.69 ops/sec
SET large str, 50/5 min/max/avg/p95: 0/ 3/ 1.34/ 2.00 536ms total, 37313.43 ops/sec
SET large str, 200/5 min/max/avg/p95: 1/ 11/ 5.21/ 8.00 525ms total, 38095.24 ops/sec
SET large str, 20000/5 min/max/avg/p95: 100/ 691/ 399.60/ 632.55 703ms total, 28449.50 ops/sec
SET large buf, 1/5 min/max/avg/p95: 0/ 4/ 0.16/ 1.00 3183ms total, 6283.38 ops/sec
SET large buf, 50/5 min/max/avg/p95: 0/ 8/ 4.08/ 6.00 1636ms total, 12224.94 ops/sec
SET large buf, 200/5 min/max/avg/p95: 0/ 34/ 16.26/ 26.00 1634ms total, 12239.90 ops/sec
SET large buf, 20000/5 min/max/avg/p95: 157/1838/1006.61/1737.30 1844ms total, 10845.99 ops/sec
GET large str, 1/5 min/max/avg/p95: 0/ 4/ 0.09/ 1.00 1895ms total, 10554.09 ops/sec
GET large str, 50/5 min/max/avg/p95: 0/ 8/ 1.94/ 3.00 779ms total, 25673.94 ops/sec
GET large str, 200/5 min/max/avg/p95: 0/ 33/ 9.47/ 21.55 953ms total, 20986.36 ops/sec
GET large str, 20000/5 min/max/avg/p95: 479/ 676/ 582.74/ 647.00 1105ms total, 18099.55 ops/sec
GET large buf, 1/5 min/max/avg/p95: 0/ 3/ 0.09/ 1.00 1889ms total, 10587.61 ops/sec
GET large buf, 50/5 min/max/avg/p95: 0/ 16/ 1.91/ 3.00 766ms total, 26109.66 ops/sec
GET large buf, 200/5 min/max/avg/p95: 0/ 29/ 8.40/ 17.00 844ms total, 23696.68 ops/sec
GET large buf, 20000/5 min/max/avg/p95: 451/ 630/ 526.85/ 598.00 1010ms total, 19801.98 ops/sec
INCR, 1/5 min/max/avg/p95: 0/ 3/ 0.08/ 1.00 1723ms total, 11607.66 ops/sec
INCR, 50/5 min/max/avg/p95: 0/ 5/ 1.22/ 2.00 490ms total, 40816.33 ops/sec
INCR, 200/5 min/max/avg/p95: 0/ 11/ 4.78/ 8.00 480ms total, 41666.67 ops/sec
INCR, 20000/5 min/max/avg/p95: 43/ 446/ 247.66/ 410.55 453ms total, 44150.11 ops/sec
LPUSH, 1/5 min/max/avg/p95: 0/ 3/ 0.08/ 1.00 1698ms total, 11778.56 ops/sec
LPUSH, 50/5 min/max/avg/p95: 0/ 9/ 1.54/ 3.00 619ms total, 32310.18 ops/sec
LPUSH, 200/5 min/max/avg/p95: 0/ 13/ 5.28/ 9.00 530ms total, 37735.85 ops/sec
LPUSH, 20000/5 min/max/avg/p95: 43/ 471/ 262.14/ 431.00 488ms total, 40983.61 ops/sec
LRANGE 10, 1/5 min/max/avg/p95: 0/ 2/ 0.10/ 1.00 2094ms total, 9551.10 ops/sec
LRANGE 10, 50/5 min/max/avg/p95: 0/ 4/ 1.54/ 2.00 617ms total, 32414.91 ops/sec
LRANGE 10, 200/5 min/max/avg/p95: 0/ 29/ 6.18/ 10.00 621ms total, 32206.12 ops/sec
LRANGE 10, 20000/5 min/max/avg/p95: 87/ 706/ 396.17/ 635.10 746ms total, 26809.65 ops/sec
LRANGE 100, 1/5 min/max/avg/p95: 0/ 2/ 0.23/ 1.00 4670ms total, 4282.66 ops/sec
LRANGE 100, 50/5 min/max/avg/p95: 0/ 24/ 5.20/ 9.00 2083ms total, 9601.54 ops/sec
LRANGE 100, 200/5 min/max/avg/p95: 2/ 38/ 18.72/ 33.00 1881ms total, 10632.64 ops/sec
LRANGE 100, 20000/5 min/max/avg/p95: 737/2308/1740.67/2237.55 2794ms total, 7158.20 ops/sec
End of tests.
View hiredis.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
Comparing before, hiredis.txt ( 55 lines) to after, js_faster.txt ( 55 lines)
PING: 11634 -> 11534 ops/sec (∆ -100 )
PING: 40241 -> 43956 ops/sec (∆ +3715 )
PING: 44543 -> 46189 ops/sec (∆ +1646 )
PING: 43763 -> 44742 ops/sec (∆ +979 )
SET small str: 11160 -> 11198 ops/sec (∆ +38 )
SET small str: 38834 -> 40899 ops/sec (∆ +2065 )
SET small str: 41841 -> 43668 ops/sec (∆ +1827 )
SET small str: 29673 -> 44843 ops/sec (∆ +15170 )
SET small buf: 5961 -> 6809 ops/sec (∆ +848 )
SET small buf: 10787 -> 12399 ops/sec (∆ +1612 )
SET small buf: 12070 -> 12523 ops/sec (∆ +453 )
SET small buf: 10781 -> 11019 ops/sec (∆ +238 )
GET small str: 11976 -> 11494 ops/sec (∆ -482 )
GET small str: 38387 -> 38986 ops/sec (∆ +599 )
GET small str: 42372 -> 41152 ops/sec (∆ -1220 )
GET small str: 40404 -> 40983 ops/sec (∆ +579 )
GET small buf: 12062 -> 12150 ops/sec (∆ +88 )
GET small buf: 39840 -> 38610 ops/sec (∆ -1230 )
GET small buf: 42105 -> 40816 ops/sec (∆ -1289 )
GET small buf: 39603 -> 41666 ops/sec (∆ +2063 )
SET large str: 9925 -> 10362 ops/sec (∆ +437 )
SET large str: 36297 -> 37313 ops/sec (∆ +1016 )
SET large str: 37523 -> 38095 ops/sec (∆ +572 )
SET large str: 28011 -> 28449 ops/sec (∆ +438 )
SET large buf: 6474 -> 6283 ops/sec (∆ -191 )
SET large buf: 11940 -> 12224 ops/sec (∆ +284 )
SET large buf: 11933 -> 12239 ops/sec (∆ +306 )
SET large buf: 9891 -> 10845 ops/sec (∆ +954 )
GET large str: 10405 -> 10554 ops/sec (∆ +149 )
GET large str: 25773 -> 25673 ops/sec (∆ -100 )
GET large str: 25380 -> 20986 ops/sec (∆ -4394 )
GET large str: 20986 -> 18099 ops/sec (∆ -2887 )
GET large buf: 10422 -> 10587 ops/sec (∆ +165 )
GET large buf: 25873 -> 26109 ops/sec (∆ +236 )
GET large buf: 25740 -> 23696 ops/sec (∆ -2044 )
GET large buf: 21052 -> 19801 ops/sec (∆ -1251 )
INCR: 10964 -> 11607 ops/sec (∆ +643 )
INCR: 39525 -> 40816 ops/sec (∆ +1291 )
INCR: 41237 -> 41666 ops/sec (∆ +429 )
INCR: 37735 -> 44150 ops/sec (∆ +6415 )
LPUSH: 11855 -> 11778 ops/sec (∆ -77 )
LPUSH: 39447 -> 32310 ops/sec (∆ -7137 )
LPUSH: 42194 -> 37735 ops/sec (∆ -4459 )
LPUSH: 41493 -> 40983 ops/sec (∆ -510 )
LRANGE 10: 9713 -> 9551 ops/sec (∆ -162 )
LRANGE 10: 32948 -> 32414 ops/sec (∆ -534 )
LRANGE 10: 35273 -> 32206 ops/sec (∆ -3067 )
LRANGE 10: 31847 -> 26809 ops/sec (∆ -5038 )
LRANGE 100: 5241 -> 4282 ops/sec (∆ -959 )
LRANGE 100: 13802 -> 9601 ops/sec (∆ -4201 )
LRANGE 100: 11876 -> 10632 ops/sec (∆ -1244 )
LRANGE 100: 8639 -> 7158 ops/sec (∆ -1481 )
Mean difference in ops/sec: +23.038461538461345
View hiredis.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
$ node --version
v0.8.11
 
$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
 
$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
 
$ redis-cli INFO | grep version
redis_version:2.4.17
gcc_version:4.2.1
 
$ system_profiler SPHardwareDataType | grep "Model\|Processor\|Core"
Model Name: Mac mini
Model Identifier: Macmini4,1
Processor Name: Intel Core 2 Duo
Processor Speed: 2.66 GHz
Number of Processors: 1
Total Number of Cores: 2
Owner

Benchmark running on Ubuntu:
https://gist.github.com/3879450

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.