Skip to content

scalalang2/go-cache-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cache benchmark for Go

This benchmark compares cache eviction algorithms using Zipfian distribution.

This referred to this code a lot.

This evaluation results wes proceeded on my desktop. It will show different results depending on execution environments.

Cache libraries used

Name Ref
sieve https://github.com/scalalang2/golang-fifo
s3-fifo https://github.com/scalalang2/golang-fifo
s3-fifo (otter) https://github.com/maypok86/otter
clock https://github.com/Code-Hex/go-generics-cache
lru-hashicorp https://github.com/hashicorp/golang-lru
lru-groupcache https://github.com/golang/groupcache/lru
two-queue https://github.com/hashicorp/golang-lru
s4-lru https://github.com/dgryski/go-s4lru
tinylfu https://github.com/dgryski/go-tinylfu
$ go run *.go

itemSize=500000, workloads=7500000, cacheSize=0.10%, zipf's alpha=0.99, concurrency=1

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  otter           | 47.43%  |  3311258 | 3557498 | 3942502
  sieve           | 47.42%  |  5053908 | 3556217 | 3943783
  tinylfu         | 47.37%  |  5559674 | 3552888 | 3947112
  s3-fifo         | 47.16%  |  2650177 | 3537110 | 3962890
  slru            | 46.48%  |  3945292 | 3486209 | 4013791
  s4lru           | 46.15%  |  7716049 | 3461183 | 4038817
  two-queue       | 45.49%  |  2846300 | 3411961 | 4088039
  clock           | 37.34%  |  5292872 | 2800767 | 4699233
  freelru-sharded | 36.63%  | 12711864 | 2747389 | 4752611
  lru-hashicorp   | 36.59%  |  4649721 | 2744181 | 4755819
  lru-groupcache  | 36.59%  |  4422170 | 2744181 | 4755819
  freelru-synced  | 36.59%  | 12668919 | 2744181 | 4755819


itemSize=500000, workloads=7500000, cacheSize=0.10%, zipf's alpha=0.99, concurrency=2

       CACHE      | HITRATE |   QPS   |  HITS   | MISSES
------------------+---------+---------+---------+----------
  sieve           | 47.58%  | 3104305 | 3568241 | 3931759
  otter           | 47.48%  | 4485646 | 3561202 | 3938798
  tinylfu         | 47.37%  | 3683694 | 3552877 | 3947123
  s3-fifo         | 47.17%  | 2020474 | 3537617 | 3962383
  slru            | 46.48%  | 3220266 | 3486274 | 4013726
  s4lru           | 46.15%  | 4854369 | 3461428 | 4038572
  two-queue       | 45.50%  | 2265177 | 3412695 | 4087305
  clock           | 37.33%  | 3768844 | 2799597 | 4700403
  freelru-sharded | 36.62%  | 8278146 | 2746505 | 4753495
  lru-groupcache  | 36.58%  | 3464203 | 2743803 | 4756197
  lru-hashicorp   | 36.58%  | 3561254 | 2743775 | 4756225
  freelru-synced  | 36.58%  | 7995736 | 2743493 | 4756507


itemSize=500000, workloads=7500000, cacheSize=0.10%, zipf's alpha=0.99, concurrency=4

       CACHE      | HITRATE |   QPS   |  HITS   | MISSES
------------------+---------+---------+---------+----------
  otter           | 47.80%  | 5510654 | 3584825 | 3915175
  sieve           | 47.77%  | 2762431 | 3582402 | 3917598
  tinylfu         | 47.37%  | 3280840 | 3553026 | 3946974
  s3-fifo         | 47.16%  | 1958225 | 3537165 | 3962835
  slru            | 46.49%  | 3009631 | 3486597 | 4013403
  s4lru           | 46.16%  | 4315305 | 3461643 | 4038357
  two-queue       | 45.49%  | 2085651 | 3411995 | 4088005
  clock           | 37.33%  | 3566334 | 2799694 | 4700306
  freelru-sharded | 36.62%  | 7591093 | 2746349 | 4753651
  lru-groupcache  | 36.58%  | 3171247 | 2743415 | 4756585
  freelru-synced  | 36.57%  | 6421233 | 2743084 | 4756916
  lru-hashicorp   | 36.56%  | 3211991 | 2742353 | 4757647


itemSize=500000, workloads=7500000, cacheSize=0.10%, zipf's alpha=0.99, concurrency=8

       CACHE      | HITRATE |   QPS   |  HITS   | MISSES
------------------+---------+---------+---------+----------
  otter           | 50.36%  | 6082725 | 3776656 | 3723344
  sieve           | 47.65%  | 2521008 | 3573569 | 3926431
  tinylfu         | 47.37%  | 3312721 | 3552852 | 3947148
  s3-fifo         | 47.15%  | 1934985 | 3536597 | 3963403
  slru            | 46.48%  | 2927400 | 3486227 | 4013773
  s4lru           | 46.14%  | 3978780 | 3460543 | 4039457
  two-queue       | 45.49%  | 2064410 | 3412067 | 4087933
  clock           | 37.33%  | 3412193 | 2799919 | 4700081
  freelru-sharded | 36.62%  | 8073197 | 2746186 | 4753814
  freelru-synced  | 36.57%  | 5933544 | 2743019 | 4756981
  lru-groupcache  | 36.57%  | 3156566 | 2742945 | 4757055
  lru-hashicorp   | 36.56%  | 3027856 | 2742193 | 4757807


itemSize=500000, workloads=7500000, cacheSize=0.10%, zipf's alpha=0.99, concurrency=16

       CACHE      | HITRATE |   QPS   |  HITS   | MISSES
------------------+---------+---------+---------+----------
  otter           | 51.03%  | 5841121 | 3827156 | 3672844
  sieve           | 47.67%  | 2644570 | 3575574 | 3924426
  tinylfu         | 47.37%  | 3214745 | 3552508 | 3947492
  s3-fifo         | 47.17%  | 1965924 | 3537449 | 3962551
  slru            | 46.49%  | 2942330 | 3486632 | 4013368
  s4lru           | 46.13%  | 4043127 | 3459782 | 4040218
  two-queue       | 45.49%  | 2110298 | 3411759 | 4088241
  clock           | 37.33%  | 3370787 | 2799491 | 4700509
  freelru-sharded | 36.61%  | 8038585 | 2745651 | 4754349
  lru-groupcache  | 36.57%  | 3135452 | 2742601 | 4757399
  freelru-synced  | 36.56%  | 5751534 | 2742103 | 4757897
  lru-hashicorp   | 36.56%  | 3052503 | 2741931 | 4758069


itemSize=500000, workloads=7500000, cacheSize=1.00%, zipf's alpha=0.99, concurrency=1

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 63.94%  |  5656109 | 4795548 | 2704452
  otter           | 63.61%  |  3038898 | 4770473 | 2729527
  s3-fifo         | 63.59%  |  2843063 | 4768904 | 2731096
  sieve           | 63.33%  |  6323777 | 4750114 | 2749886
  slru            | 62.89%  |  4515352 | 4716703 | 2783297
  s4lru           | 62.68%  |  7218479 | 4701098 | 2798902
  two-queue       | 61.99%  |  3121099 | 4649213 | 2850787
  clock           | 56.12%  |  5873140 | 4208674 | 3291326
  freelru-sharded | 55.46%  | 12908778 | 4159218 | 3340782
  lru-hashicorp   | 55.37%  |  5241090 | 4153014 | 3346986
  lru-groupcache  | 55.37%  |  5060729 | 4153014 | 3346986
  freelru-synced  | 55.37%  | 12479201 | 4153014 | 3346986


itemSize=500000, workloads=7500000, cacheSize=1.00%, zipf's alpha=0.99, concurrency=2

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 63.93%  |  3255208 | 4794994 | 2705006
  otter           | 63.60%  |  3685504 | 4769856 | 2730144
  s3-fifo         | 63.58%  |  2086811 | 4768156 | 2731844
  sieve           | 63.40%  |  2986858 | 4754832 | 2745168
  slru            | 62.87%  |  3430924 | 4715246 | 2784754
  s4lru           | 62.68%  |  4960317 | 4701063 | 2798937
  two-queue       | 61.99%  |  2365184 | 4649330 | 2850670
  clock           | 56.11%  |  4388531 | 4208616 | 3291384
  freelru-sharded | 55.46%  | 12077295 | 4159445 | 3340555
  lru-hashicorp   | 55.38%  |  3714710 | 4153562 | 3346438
  freelru-synced  | 55.37%  |  7772021 | 4153017 | 3346983
  lru-groupcache  | 55.37%  |  3720238 | 4152904 | 3347096


itemSize=500000, workloads=7500000, cacheSize=1.00%, zipf's alpha=0.99, concurrency=4

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 63.94%  |  3069996 | 4795149 | 2704851
  otter           | 63.58%  |  3924647 | 4768239 | 2731761
  s3-fifo         | 63.57%  |  2000533 | 4768108 | 2731892
  sieve           | 63.38%  |  2378687 | 4753855 | 2746145
  slru            | 62.87%  |  3199659 | 4715194 | 2784806
  s4lru           | 62.68%  |  4157428 | 4700782 | 2799218
  two-queue       | 62.00%  |  2222881 | 4649704 | 2850296
  clock           | 56.12%  |  3678274 | 4208913 | 3291087
  freelru-sharded | 55.46%  | 14534884 | 4159525 | 3340475
  lru-hashicorp   | 55.38%  |  3324468 | 4153204 | 3346796
  freelru-synced  | 55.37%  |  5910165 | 4152932 | 3347068
  lru-groupcache  | 55.37%  |  3327418 | 4152786 | 3347214


itemSize=500000, workloads=7500000, cacheSize=1.00%, zipf's alpha=0.99, concurrency=8

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 63.93%  |  2893519 | 4794449 | 2705551
  s3-fifo         | 63.57%  |  1982554 | 4767839 | 2732161
  sieve           | 63.40%  |  2371917 | 4754855 | 2745145
  slru            | 62.88%  |  3016895 | 4716153 | 2783847
  s4lru           | 62.67%  |  3949447 | 4700359 | 2799641
  otter           | 62.34%  |  4312823 | 4675589 | 2824411
  two-queue       | 61.99%  |  2127056 | 4649532 | 2850468
  clock           | 56.11%  |  3499767 | 4208371 | 3291629
  freelru-sharded | 55.45%  | 19788918 | 4158923 | 3341077
  lru-hashicorp   | 55.37%  |  3207870 | 4152986 | 3347014
  lru-groupcache  | 55.36%  |  3209243 | 4152253 | 3347747
  freelru-synced  | 55.36%  |  5555556 | 4152207 | 3347793


itemSize=500000, workloads=7500000, cacheSize=1.00%, zipf's alpha=0.99, concurrency=16

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 63.94%  |  2955083 | 4795206 | 2704794
  s3-fifo         | 63.57%  |  1926535 | 4768059 | 2731941
  sieve           | 63.50%  |  2353310 | 4762580 | 2737420
  slru            | 62.88%  |  3021757 | 4715854 | 2784146
  s4lru           | 62.68%  |  3888025 | 4700723 | 2799277
  two-queue       | 61.99%  |  2202643 | 4649158 | 2850842
  otter           | 61.91%  |  4391101 | 4643488 | 2856512
  clock           | 56.11%  |  3559563 | 4207883 | 3292117
  freelru-sharded | 55.45%  | 27075812 | 4159090 | 3340910
  lru-hashicorp   | 55.38%  |  3203759 | 4153404 | 3346596
  freelru-synced  | 55.37%  |  5197505 | 4152900 | 3347100
  lru-groupcache  | 55.36%  |  3175275 | 4152140 | 3347860


itemSize=500000, workloads=7500000, cacheSize=10.00%, zipf's alpha=0.99, concurrency=1

       CACHE      | HITRATE |   QPS   |  HITS   | MISSES
------------------+---------+---------+---------+----------
  tinylfu         | 80.43%  | 4340278 | 6032039 | 1467961
  otter           | 79.86%  | 2307692 | 5989804 | 1510196
  s3-fifo         | 79.84%  | 2659574 | 5987895 | 1512105
  sieve           | 79.69%  | 6345178 | 5976378 | 1523622
  s4lru           | 78.98%  | 5438724 | 5923748 | 1576252
  two-queue       | 78.77%  | 3020540 | 5907726 | 1592274
  slru            | 78.68%  | 4019293 | 5901224 | 1598776
  clock           | 76.44%  | 6087662 | 5732671 | 1767329
  freelru-sharded | 75.82%  | 9752926 | 5686230 | 1813770
  lru-hashicorp   | 75.82%  | 5000000 | 5686182 | 1813818
  lru-groupcache  | 75.82%  | 4325260 | 5686182 | 1813818
  freelru-synced  | 75.82%  | 9640103 | 5686182 | 1813818


itemSize=500000, workloads=7500000, cacheSize=10.00%, zipf's alpha=0.99, concurrency=2

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 80.44%  |  3106877 | 6032660 | 1467340
  otter           | 79.86%  |  3231366 | 5989857 | 1510143
  s3-fifo         | 79.84%  |  2058743 | 5987986 | 1512014
  sieve           | 79.71%  |  2703677 | 5978276 | 1521724
  s4lru           | 78.99%  |  4058442 | 5923915 | 1576085
  two-queue       | 78.78%  |  2401537 | 5908518 | 1591482
  slru            | 78.68%  |  3134141 | 5901353 | 1598647
  clock           | 76.45%  |  4385965 | 5733538 | 1766462
  freelru-sharded | 75.83%  | 11792453 | 5687600 | 1812400
  lru-groupcache  | 75.83%  |  3352705 | 5687576 | 1812424
  lru-hashicorp   | 75.83%  |  3640777 | 5687483 | 1812517
  freelru-synced  | 75.83%  |  6906077 | 5687430 | 1812570


itemSize=500000, workloads=7500000, cacheSize=10.00%, zipf's alpha=0.99, concurrency=4

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 80.44%  |  2841986 | 6033160 | 1466840
  otter           | 79.85%  |  2399232 | 5989003 | 1510997
  s3-fifo         | 79.82%  |  1966439 | 5986817 | 1513183
  sieve           | 79.72%  |  2207181 | 5978935 | 1521065
  s4lru           | 78.98%  |  3496503 | 5923172 | 1576828
  two-queue       | 78.78%  |  2122842 | 5908180 | 1591820
  slru            | 78.68%  |  2841986 | 5900709 | 1599291
  clock           | 76.45%  |  3842213 | 5733546 | 1766454
  lru-groupcache  | 75.84%  |  3217503 | 5687651 | 1812349
  lru-hashicorp   | 75.83%  |  3363229 | 5687624 | 1812376
  freelru-synced  | 75.83%  |  5588674 | 5687445 | 1812555
  freelru-sharded | 75.82%  | 15756303 | 5686624 | 1813376


itemSize=500000, workloads=7500000, cacheSize=10.00%, zipf's alpha=0.99, concurrency=8

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 80.45%  |  2832326 | 6033703 | 1466297
  s3-fifo         | 79.83%  |  1975764 | 5987378 | 1512622
  sieve           | 79.70%  |  2158895 | 5977574 | 1522426
  s4lru           | 78.98%  |  3358710 | 5923728 | 1576272
  two-queue       | 78.78%  |  2282410 | 5908763 | 1591237
  slru            | 78.68%  |  2824859 | 5901374 | 1598626
  otter           | 77.28%  |  4051864 | 5795666 | 1704334
  clock           | 76.44%  |  3751876 | 5733333 | 1766667
  lru-groupcache  | 75.84%  |  3157895 | 5688179 | 1811821
  freelru-synced  | 75.83%  |  4860661 | 5687323 | 1812677
  lru-hashicorp   | 75.83%  |  3343736 | 5687291 | 1812709
  freelru-sharded | 75.83%  | 22796353 | 5687119 | 1812881


itemSize=500000, workloads=7500000, cacheSize=10.00%, zipf's alpha=0.99, concurrency=16

       CACHE      | HITRATE |   QPS    |  HITS   | MISSES
------------------+---------+----------+---------+----------
  tinylfu         | 80.44%  |  2829121 | 6032692 | 1467308
  s3-fifo         | 79.83%  |  1956692 | 5987605 | 1512395
  sieve           | 79.71%  |  2166378 | 5978372 | 1521628
  s4lru           | 78.98%  |  3276540 | 5923665 | 1576335
  two-queue       | 78.78%  |  2211085 | 5908389 | 1591611
  slru            | 78.69%  |  2789141 | 5901390 | 1598610
  otter           | 76.95%  |  3616201 | 5771458 | 1728542
  clock           | 76.45%  |  3757515 | 5733591 | 1766409
  freelru-sharded | 75.83%  | 32051282 | 5687085 | 1812915
  freelru-synced  | 75.83%  |  3718394 | 5686961 | 1813039
  lru-hashicorp   | 75.82%  |  3265128 | 5686305 | 1813695
  lru-groupcache  | 75.82%  |  3123698 | 5686208 | 1813792

About

Cache benchmark for web cache workloads in golang.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages