All Projects → vmihailenco → go-cache-benchmark

vmihailenco / go-cache-benchmark

Licence: other
Cache benchmark for Golang

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-cache-benchmark

Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+4297.87%)
Mutual labels:  lru, lru-cache
disk-lru-cache
💾 Disk LRU cache with persisted journal
Stars: ✭ 21 (-55.32%)
Mutual labels:  lru, lru-cache
golib
Open version of common golang libraries useful to many projects.
Stars: ✭ 47 (+0%)
Mutual labels:  lru, lru-cache
cache
LRU-based cache package for Go.
Stars: ✭ 25 (-46.81%)
Mutual labels:  lru, lru-cache
lru
LRU cache using go generics
Stars: ✭ 108 (+129.79%)
Mutual labels:  lru, lru-cache
hyperlru
Tiny & Fast LRU Implementation as possible.
Stars: ✭ 34 (-27.66%)
Mutual labels:  lru, lru-cache
gocache
High performance and lightweight in-memory cache library with LRU and FIFO support as well as memory-usage-based-eviction
Stars: ✭ 15 (-68.09%)
Mutual labels:  lru, lru-cache
memo-async-lru
Memoize Node.js style callback-last functions, using an in-memory LRU store
Stars: ✭ 17 (-63.83%)
Mutual labels:  lru, lru-cache
LruClockCache
A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.
Stars: ✭ 35 (-25.53%)
Mutual labels:  lru, lru-cache
GoCache
A simplest Cache Server based on LRU implementation written in Go
Stars: ✭ 15 (-68.09%)
Mutual labels:  lru-cache
Algorithm-Implementation
This is our effort to collect the best implementations to tough algorithms. All codes are written in c++.
Stars: ✭ 16 (-65.96%)
Mutual labels:  lru-cache
Gcache
An in-memory cache library for golang. It supports multiple eviction policies: LRU, LFU, ARC
Stars: ✭ 1,787 (+3702.13%)
Mutual labels:  lru
mcache
An in-memory cache library for golang. support: lru,lfu,hash-lru,hash-lfu,arc. 一个高性能本地内存缓存,带有各种内存淘汰算法
Stars: ✭ 311 (+561.7%)
Mutual labels:  lru
gotcha
[Not Safe For Production] gotcha: inmemory-cache in Go (Golang) with customizable algorithm
Stars: ✭ 13 (-72.34%)
Mutual labels:  lru-cache
elara
Elara DB is an easy to use, lightweight key-value database that can also be used as a fast in-memory cache. Manipulate data structures in-memory, encrypt database files and export data. 🎯
Stars: ✭ 93 (+97.87%)
Mutual labels:  lru-cache
methodtools
Expand functools features(lru_cache) to class - methods, classmethods, staticmethods and even for (unofficial) hybrid methods.
Stars: ✭ 57 (+21.28%)
Mutual labels:  lru-cache

All-in-one tool to optimize performance and monitor errors & logs

Cache comparison benchmark for Go

This benchmark compares cache algorithms using scrambled zipfian distribution (a few occur very often while many others occur rarely). Other distributions are supported too, but they produce similar results. You may also want to check cachetest.

The following libraries are supported:

And the results are:

TLDR
  • TinyLFU works best for small number of keys (~ 100k). TinyLFU memory overhead can be tweaked with the 2nd argument.
  • Clock-pro has significantly smaller memory usage with large number of keys (~ 1m).
  • Segmented LRU has even smaller memory usage, but has inconsistent hit rate.
  • Ristretto can still be a good choice if you need additional features it provides.
zipfian cache=1000 keys=10000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.34 | 254ms | 0.20MiB | 339363 | 660637  
  clockpro       |     0.33 | 262ms | 0.40MiB | 328143 | 671857  
  arc            |     0.32 | 455ms | 0.49MiB | 319438 | 680562  
  ristretto      |     0.32 | 436ms | 3.52MiB | 320537 | 679463  
  directcache    |     0.48 | 218ms | 0.21MiB | 481128 | 518872  
  two-queue      |     0.32 | 456ms | 0.33MiB | 316910 | 683090  
  lru-groupcache |     0.28 | 266ms | 0.22MiB | 280730 | 719270  
  lru-hashicorp  |     0.28 | 288ms | 0.22MiB | 280377 | 719623  
  s4lru          |     0.33 | 198ms | 0.22MiB | 332599 | 667401  
  slru           |     0.33 | 300ms | 0.20MiB | 329509 | 670491  
  wtfcache       |     0.28 | 229ms | 0.19MiB | 279742 | 720258  


zipfian cache=1000 keys=100000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.29 | 242ms | 0.18MiB | 289752 | 710248  
  clockpro       |     0.29 | 259ms | 0.41MiB | 285591 | 714409  
  arc            |     0.28 | 446ms | 0.43MiB | 283353 | 716647  
  ristretto      |     0.24 | 468ms | 3.93MiB | 236928 | 763072  
  directcache    |     0.27 | 224ms | 0.21MiB | 274123 | 725877  
  two-queue      |     0.28 | 469ms | 0.32MiB | 276276 | 723724  
  lru-groupcache |     0.21 | 279ms | 0.21MiB | 208824 | 791176  
  lru-hashicorp  |     0.21 | 301ms | 0.22MiB | 207826 | 792174  
  s4lru          |     0.28 | 196ms | 0.22MiB | 277247 | 722753  
  slru           |     0.28 | 302ms | 0.19MiB | 276295 | 723705  
  wtfcache       |     0.21 | 244ms | 0.19MiB | 207185 | 792815  


zipfian cache=1000 keys=1000000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.29 | 248ms | 0.18MiB | 288601 | 711399  
  clockpro       |     0.29 | 260ms | 0.41MiB | 288899 | 711101  
  arc            |     0.29 | 456ms | 0.45MiB | 287758 | 712242  
  ristretto      |     0.22 | 495ms | 0.76MiB | 218458 | 781542  
  directcache    |     0.25 | 233ms | 0.21MiB | 254150 | 745850  
  two-queue      |     0.28 | 484ms | 0.34MiB | 278537 | 721463  
  lru-groupcache |     0.20 | 278ms | 0.22MiB | 200153 | 799847  
  lru-hashicorp  |     0.20 | 318ms | 0.21MiB | 201648 | 798352  
  s4lru          |     0.27 | 213ms | 0.21MiB | 272905 | 727095  
  slru           |     0.27 | 314ms | 0.18MiB | 270394 | 729606  
  wtfcache       |     0.20 | 245ms | 0.19MiB | 200961 | 799039  


zipfian cache=10000 keys=100000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.41 | 281ms | 1.99MiB | 412001 | 587999  
  clockpro       |     0.41 | 432ms | 3.54MiB | 406993 | 593007  
  arc            |     0.40 | 919ms | 4.16MiB | 395673 | 604327  
  ristretto      |     0.40 | 366ms | 7.02MiB | 396708 | 603292  
  directcache    |     0.37 | 249ms | 0.77MiB | 370036 | 629964  
  two-queue      |     0.40 | 730ms | 3.13MiB | 398233 | 601767  
  lru-groupcache |     0.37 | 364ms | 1.98MiB | 365455 | 634545  
  lru-hashicorp  |     0.36 | 425ms | 1.98MiB | 364845 | 635155  
  s4lru          |     0.39 | 313ms | 1.94MiB | 392852 | 607148  
  slru           |     0.39 | 410ms | 1.98MiB | 385549 | 614451  
  wtfcache       |     0.37 | 301ms | 1.68MiB | 365759 | 634241  


zipfian cache=10000 keys=1000000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.37 | 314ms | 1.97MiB | 367741 | 632259  
  clockpro       |     0.36 | 338ms | 3.59MiB | 363505 | 636495  
  arc            |     0.36 | 584ms | 4.19MiB | 362503 | 637497  
  ristretto      |     0.34 | 382ms | 7.10MiB | 338357 | 661643  
  directcache    |     0.31 | 230ms | 0.76MiB | 309275 | 690725  
  two-queue      |     0.36 | 567ms | 3.21MiB | 359047 | 640953  
  lru-groupcache |     0.30 | 329ms | 1.97MiB | 304014 | 695986  
  lru-hashicorp  |     0.30 | 354ms | 1.97MiB | 303598 | 696402  
  s4lru          |     0.33 | 223ms | 1.60MiB | 331456 | 668544  
  slru           |     0.33 | 333ms | 1.34MiB | 326529 | 673471  
  wtfcache       |     0.30 | 271ms | 1.67MiB | 303214 | 696786  


zipfian cache=10000 keys=10000000

      CACHE      | HIT RATE | TIME  | MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+---------+--------+---------
  tinylfu        |     0.36 | 277ms | 1.95MiB | 364256 | 635744  
  clockpro       |     0.36 | 302ms | 3.60MiB | 360103 | 639897  
  arc            |     0.36 | 598ms | 4.16MiB | 360572 | 639428  
  ristretto      |     0.33 | 345ms | 7.14MiB | 331305 | 668695  
  directcache    |     0.30 | 234ms | 0.75MiB | 303046 | 696954  
  two-queue      |     0.35 | 575ms | 3.24MiB | 354729 | 645271  
  lru-groupcache |     0.30 | 321ms | 1.98MiB | 297185 | 702815  
  lru-hashicorp  |     0.30 | 352ms | 1.98MiB | 296834 | 703166  
  s4lru          |     0.33 | 219ms | 1.33MiB | 327179 | 672821  
  slru           |     0.32 | 328ms | 1.19MiB | 321550 | 678450  
  wtfcache       |     0.30 | 271ms | 1.67MiB | 298173 | 701827  


zipfian cache=100000 keys=1000000

      CACHE      | HIT RATE | TIME  |  MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+----------+--------+---------
  tinylfu        |     0.46 | 465ms | 19.18MiB | 458753 | 541247  
  clockpro       |     0.46 | 480ms | 29.59MiB | 458491 | 541509  
  arc            |     0.46 | 980ms | 35.91MiB | 459607 | 540393  
  ristretto      |     0.45 | 432ms | 29.09MiB | 451846 | 548154  
  directcache    |     0.45 | 266ms |  6.24MiB | 449331 | 550669  
  two-queue      |     0.46 | 886ms | 28.82MiB | 459891 | 540109  
  lru-groupcache |     0.45 | 450ms | 17.75MiB | 445664 | 554336  
  lru-hashicorp  |     0.45 | 496ms | 17.76MiB | 445351 | 554649  
  s4lru          |     0.40 | 284ms |  9.57MiB | 404596 | 595404  
  slru           |     0.40 | 406ms |  8.07MiB | 395499 | 604501  
  wtfcache       |     0.45 | 382ms | 14.71MiB | 445871 | 554129  


zipfian cache=100000 keys=10000000

      CACHE      | HIT RATE | TIME  |  MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+----------+--------+---------
  tinylfu        |     0.41 | 458ms | 18.75MiB | 411355 | 588645  
  clockpro       |     0.41 | 445ms | 29.73MiB | 411368 | 588632  
  arc            |     0.41 | 938ms | 35.14MiB | 411948 | 588052  
  ristretto      |     0.40 | 424ms | 29.01MiB | 401787 | 598213  
  directcache    |     0.40 | 253ms |  6.38MiB | 400520 | 599480  
  two-queue      |     0.41 | 878ms | 27.71MiB | 411830 | 588170  
  lru-groupcache |     0.40 | 441ms | 17.90MiB | 396088 | 603912  
  lru-hashicorp  |     0.40 | 459ms | 17.89MiB | 396648 | 603352  
  s4lru          |     0.38 | 252ms |  7.63MiB | 379652 | 620348  
  slru           |     0.37 | 382ms |  6.26MiB | 374019 | 625981  
  wtfcache       |     0.40 | 362ms | 14.84MiB | 396547 | 603453  


zipfian cache=100000 keys=100000000

      CACHE      | HIT RATE | TIME  |  MEMORY  |  HITS  | MISSES  
-----------------+----------+-------+----------+--------+---------
  tinylfu        |     0.41 | 416ms | 18.69MiB | 406565 | 593435  
  clockpro       |     0.41 | 447ms | 29.69MiB | 407329 | 592671  
  arc            |     0.41 | 932ms | 35.29MiB | 408391 | 591609  
  ristretto      |     0.40 | 424ms | 29.31MiB | 397395 | 602605  
  directcache    |     0.40 | 271ms |  6.38MiB | 396138 | 603862  
  two-queue      |     0.41 | 837ms | 28.69MiB | 407455 | 592545  
  lru-groupcache |     0.39 | 448ms | 17.90MiB | 391166 | 608834  
  lru-hashicorp  |     0.39 | 466ms | 17.90MiB | 391200 | 608800  
  s4lru          |     0.38 | 262ms |  7.49MiB | 378169 | 621831  
  slru           |     0.37 | 378ms |  6.12MiB | 372687 | 627313  
  wtfcache       |     0.39 | 356ms | 14.85MiB | 391717 | 608283  


zipfian cache=1000000 keys=10000000

      CACHE      | HIT RATE | TIME  |  MEMORY   |  HITS  | MISSES  
-----------------+----------+-------+-----------+--------+---------
  tinylfu        |     0.45 | 715ms | 138.28MiB | 447743 | 552257  
  clockpro       |     0.45 | 476ms |  84.26MiB | 447792 | 552208  
  arc            |     0.45 | 764ms |  98.46MiB | 447224 | 552776  
  ristretto      |     0.41 | 446ms | 105.33MiB | 409853 | 590147  
  directcache    |     0.45 | 323ms |  40.08MiB | 447663 | 552337  
  two-queue      |     0.45 | 786ms |  98.40MiB | 447587 | 552413  
  lru-groupcache |     0.45 | 582ms |  92.71MiB | 447619 | 552381  
  lru-hashicorp  |     0.45 | 644ms |  92.67MiB | 447984 | 552016  
  s4lru          |     0.44 | 486ms |  50.13MiB | 437228 | 562772  
  slru           |     0.43 | 620ms |  41.28MiB | 431884 | 568116  
  wtfcache       |     0.45 | 503ms | 103.43MiB | 448204 | 551796  


zipfian cache=1000000 keys=100000000

      CACHE      | HIT RATE | TIME  |  MEMORY   |  HITS  | MISSES  
-----------------+----------+-------+-----------+--------+---------
  tinylfu        |     0.44 | 736ms | 139.70MiB | 435255 | 564745  
  clockpro       |     0.44 | 489ms |  85.49MiB | 435297 | 564703  
  arc            |     0.44 | 787ms |  96.10MiB | 435752 | 564248  
  ristretto      |     0.40 | 452ms | 105.25MiB | 403229 | 596771  
  directcache    |     0.43 | 318ms |  40.09MiB | 434648 | 565352  
  two-queue      |     0.43 | 742ms |  96.25MiB | 434377 | 565623  
  lru-groupcache |     0.44 | 615ms |  94.14MiB | 435035 | 564965  
  lru-hashicorp  |     0.43 | 643ms |  94.16MiB | 434901 | 565099  
  s4lru          |     0.43 | 469ms |  48.95MiB | 426663 | 573337  
  slru           |     0.42 | 583ms |  40.27MiB | 423834 | 576166  
  wtfcache       |     0.44 | 500ms | 104.45MiB | 435936 | 564064  

To run this benchmark:

go run *.go
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].