Skip to content

Instantly share code, notes, and snippets.

@pH200
Created October 12, 2012 14:19
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 pH200/3879408 to your computer and use it in GitHub Desktop.
Save pH200/3879408 to your computer and use it in GitHub Desktop.
Node redis benchmark, comparing hiredis and faster parsers. Running on Mac Mini.
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.
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.
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
$ 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
@pH200
Copy link
Author

pH200 commented Oct 12, 2012

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