Skip to content

Instantly share code, notes, and snippets.

@tonistiigi
Last active December 13, 2015 20:49
Show Gist options
  • Save tonistiigi/4973004 to your computer and use it in GitHub Desktop.
Save tonistiigi/4973004 to your computer and use it in GitHub Desktop.
redisparse benchmark results
redisparse node_redis node_redis_old hiredis
ping 190±5 219±7 15% 216±2 14% 537±5 183%
set_small_str 140±4 175±7 24% 170±2 21% 522±21 272%
get_small_str 981±24 100% 491±6 1168±41 138% 535±8 9%
get_small_buf 510±6 681±54 34% 816±57 60% 883±45 73%
get_large_str 4295±30 13% 3793±79 59200±188 1461% 3842±75 1%
get_large_buf 661±8 764±56 16% 56223±274 8406% 4294±3 550%
incr 229±5 264±8 15% 277±1 21% 490±9 114%
lpush 227±6 262±7 15% 267±0 18% 491±5 116%
lrange10 321±3 79% 256±5 43% 180±3 431±1 140%
lrange100 269±4 49% 251±5 39% 181±3 401±1 122%
redisparse node_redis node_redis_old hiredis
ping 181±3 213±3 17% 209±7 15% 493±2 172%
set_small_str 135±4 174±4 29% 167±2 24% 480±8 256%
get_small_str 1058±19 111% 507±24 1% 1172±27 134% 502±7
get_small_buf 468±27 677±36 45% 656±24 40% 900±17 92%
get_large_str 4332±20 18% 3695±33 0% 57662±1305 1468%3678±17
get_large_buf 563±24 752±59 34% 54222±1230 9534%4253±9 656%
incr 226±6 260±3 15% 269±2 19% 481±7 113%
lpush 224±5 257±2 15% 262±4 17% 480±7 114%
lrange10 315±9 79% 254±4 44% 176±0 434±12 146%
lrange100 262±5 52% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 185±6 213±3 15% 209±7 13% 493±2 167%
set_small_str 133±3 174±4 31% 167±2 26% 480±8 261%
get_small_str 896±38 79% 507±24 1% 1172±27 134% 502±7
get_small_buf 504±24 677±36 35% 656±24 30% 900±17 79%
get_large_str 4281±50 16% 3695±33 0% 57662±1305 1468%3678±17
get_large_buf 654±27 752±59 15% 54222±1230 8188%4253±9 550%
incr 226±3 260±3 15% 269±2 19% 481±7 113%
lpush 225±5 257±2 14% 262±4 17% 480±7 113%
lrange10 318±2 80% 254±4 44% 176±0 434±12 146%
lrange100 265±3 54% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 190±8 213±3 12% 209±7 10% 493±2 160%
set_small_str 138±4 174±4 26% 167±2 21% 480±8 248%
get_small_str 384±13 507±24 32% 1172±27 206% 502±7 31%
get_small_buf 465±24 677±36 46% 656±24 41% 900±17 93%
get_large_str 3707±54 1% 3695±33 0% 57662±1305 1468%3678±17
get_large_buf 629±21 752±59 20% 54222±1230 8518%4253±9 576%
incr 235±4 260±3 11% 269±2 15% 481±7 105%
lpush 232±3 257±2 11% 262±4 13% 480±7 106%
lrange10 321±2 82% 254±4 44% 176±0 434±12 146%
lrange100 277±9 60% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 186±4 213±3 15% 209±7 12% 493±2 165%
set_small_str 137±3 174±4 27% 167±2 22% 480±8 251%
get_small_str 279±4 507±24 82% 1172±27 320% 502±7 80%
get_small_buf 477±26 677±36 42% 656±24 37% 900±17 88%
get_large_str 3637±56 3695±33 2% 57662±1305 1485%3678±17 1%
get_large_buf 646±35 752±59 16% 54222±1230 8294%4253±9 558%
incr 239±6 260±3 8% 269±2 12% 481±7 101%
lpush 240±5 257±2 7% 262±4 9% 480±7 100%
lrange10 318±2 80% 254±4 44% 176±0 434±12 146%
lrange100 274±4 59% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 175±3 213±3 22% 209±7 19% 493±2 182%
set_small_str 128±4 174±4 36% 167±2 30% 480±8 274%
get_small_str 266±4 507±24 91% 1172±27 341% 502±7 89%
get_small_buf 446±23 677±36 52% 656±24 47% 900±17 102%
get_large_str 3625±41 3695±33 2% 57662±1305 1491%3678±17 1%
get_large_buf 532±19 752±59 41% 54222±1230 10100%4253±9 700%
incr 225±3 260±3 15% 269±2 19% 481±7 114%
lpush 223±4 257±2 15% 262±4 18% 480±7 115%
lrange10 395±6 124% 254±4 44% 176±0 434±12 146%
lrange100 324±8 88% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 167±3 213±3 28% 209±7 25% 493±2 195%
set_small_str 118±4 174±4 47% 167±2 42% 480±8 307%
get_small_str 261±9 507±24 94% 1172±27 348% 502±7 92%
get_small_buf 423±5 677±36 60% 656±24 55% 900±17 113%
get_large_str 3575±12 3695±33 3% 57662±1305 1513%3678±17 3%
get_large_buf 524±15 752±59 44% 54222±1230 10256%4253±9 712%
incr 218±6 260±3 19% 269±2 23% 481±7 121%
lpush 214±3 257±2 20% 262±4 22% 480±7 124%
lrange10 319±3 81% 254±4 44% 176±0 434±12 146%
lrange100 263±4 52% 250±3 45% 173±2 409±13 137%
redisparse node_redis node_redis_old hiredis
ping 172±6 207±3 20% 214±5 24% 488±8 183%
set_small_str 126±3 170±1 35% 170±1 35% 477±16 280%
get_small_str 268±6 464±13 73% 1210±12 352% 484±11 81%
get_small_buf 444±21 689±24 55% 617±49 39% 883±17 99%
get_large_str 725±7 728±5 0% 11359±127 1466% 745±5 3%
get_large_buf 557±34 772±18 39% 54711±941 9723% 4148±25 645%
incr 224±4 253±1 13% 288±3 29% 452±3 102%
lpush 221±4 251±1 14% 264±1 20% 452±4 105%
lrange10 468±6 9% 707±5 64% 2116±33 391% 431±3
lrange100 1033±17 32% 1568±5 100% 4925±27 528% 785±14

Benchmarks are run on same machine but on different time. So absolute numbers are not quite right but whats important is the difference between the parsers.

  • 2013-02-05 29190303b52 Initial
  • 2013-02-17 fdd6c32b0ff Update to 2.6.10
  • 2013-02-17-1 270d20986 Make string decoder when needed
  • 2013-02-17-2 f9efdde74 Don't do slice when only toString() needed
  • 2013-02-17-3 8cb9d0933 Faster toString()
  • 2013-02-17-4 570883e73 Inline UntilCRLF()
  • 2013-02-17-5 590e2e89b Make data & offset local
  • 2013-02-18 935a243c Fix lrange bench
  • 2013-03-13 v0.8 vs v0.10
Node v0.8.22
.... redisparse node_redis node_redis_old hiredis
ping 169±5 210±3 24% 208±1 23% 504±3 198%
set_small_str 125±3 169±2 36% 164±6 32% 516±10 314%
get_small_str 275±16 480±15 75% 1231±15 348% 525±10 91%
get_small_buf 535±54 623±9 16% 823±21 54% 995±3 86%
get_large_str 705±2 757±22 7% 11637±99 1550% 746±3 6%
get_large_buf 622±64 723±18 16% 57386±514 9133% 4231±32 581%
incr 221±3 253±2 15% 280±6 27% 500±1 127%
lpush 218±3 253±5 16% 259±9 18% 501±6 129%
lrange10 461±10 6% 717±4 64% 2109±38 383% 437±1
lrange100 1006±6 28% 1580±9 102% 4831±145 517% 784±1
Node v0.10.0
.... redisparse node_redis node_redis_old hiredis
ping 181±3 222±3 22% 216±7 19% 553±7 206%
set_small_str 141±4 180±3 28% 176±10 25% 580±24 312%
get_small_str 379±65 702±84 85% 1330±93 251% 557±16 47%
get_small_buf 630±32 741±11 18% 744±22 18% 1096±46 74%
get_large_str 205±8 279±6 36% 11600±36 5572% 283±4 38%
get_large_buf 743±48 851±15 15% 57564±347 7650% 4285±1 477%
incr 236±4 261±4 11% 271±3 15% 582±10 147%
lpush 232±4 259±4 12% 269±8 16% 557±21 140%
lrange10 564±51 23% 893±63 94% 2359±114 414% 459±1
lrange100 1213±145 49% 1957±145 141% 5420±124 568% 812±2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment