Skip to content

Latest commit

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Caching libraries Benchmarks

According to my new library cachebox, I decided to benchmark caching libraries which are I know, to show the power of cachebox ...

If you know other library, tell me to add it to this page.

Note

The cacheing.VTTLCache class was excluded from the benchmark because of numerous unreasonable errors.

🖥️ System Information

  • Platform: Linux-6.18.12-1-MANJARO-x86_64-with-glibc2.43
  • Python: 3.14.3
  • Processor:
  • Libraries:
    • cachebox: 6.0.0
    • cachetools: 7.1.4
    • cacheing: 0.1.1
    • lru-dict: 1.3.0

📊 Insertion

insertion

  • Performance Range: 15.5x difference between fastest and slowest
  • Best: dict (72ns, 13.9M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
dict72113.9M971.5%
lru.LRU78212.8M972.2%
cachebox.RRCache93210.7M982.1%
cachebox.LFUCache94210.7M911.9%
cachebox.Cache94210.6M892.1%
cachebox.LRUCache94210.6M872.0%
cachebox.FIFOCache95210.5M991.8%
cachebox.TTLCache162416.2M90725.2%
cacheing.RandomCache266243.8M8599.1%
cacheing.LRUCache294133.4M8634.5%
cachetools.Cache297133.4M8834.3%
cacheing.LFUCache320213.1M8326.4%
cachetools.FIFOCache379152.6M8733.9%
cachetools.RRCache396272.5M8616.9%
cachetools.LFUCache401172.5M8154.1%
cachebox.VTTLCache422792.4M94418.7%
moka_py.Moka (lru)4881452.1M95129.6%
cachetools.LRUCache564211.8M8713.8%
moka_py.Moka5653001.8M93253.1%
cacheing.TTLCache986431.0M8544.4%
cachetools.TTLCache1,117560.9M8615.0%

📊 Lookup Existing

lookup_existing

  • Performance Range: 13.6x difference between fastest and slowest
  • Best: dict (73ns, 13.7M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
dict73113.7M971.4%
cachebox.Cache83512.1M8236.2%
cachebox.RRCache92110.9M951.4%
cachebox.LFUCache93110.8M891.3%
cachebox.LRUCache93110.8M941.3%
cachebox.FIFOCache94110.6M851.2%
cacheing.RandomCache105109.5M9119.9%
lru.LRU12588.0M7886.0%
cachetools.RRCache154106.5M8946.6%
cachetools.Cache155116.5M9057.3%
cachetools.FIFOCache157116.4M9067.0%
cachebox.VTTLCache173665.8M95638.2%
cachebox.TTLCache174795.8M98545.3%
cacheing.LRUCache191125.2M8066.1%
cachetools.LRUCache306143.3M8514.4%
cacheing.LFUCache315153.2M8664.9%
moka_py.Moka (lru)3411642.9M94048.0%
moka_py.Moka3491672.9M95147.9%
cachetools.LFUCache392152.6M8773.8%
cacheing.TTLCache681281.5M8934.1%
cachetools.TTLCache994571.0M9515.7%

📊 Lookup Missing

lookup_missing

  • Performance Range: 61.8x difference between fastest and slowest
  • Best: dict (76ns, 13.2M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
dict76113.2M851.4%
cachetools.FIFOCache12088.3M8666.7%
cachetools.LFUCache12088.3M8727.0%
cachetools.LRUCache12088.3M8717.0%
cachetools.RRCache122108.2M8977.9%
cachetools.Cache125128.0M8999.5%
lru.LRU188125.3M8716.5%
moka_py.Moka3321493.0M94044.7%
moka_py.Moka (lru)3411562.9M94045.8%
cacheing.RandomCache467162.1M8613.4%
cacheing.LFUCache574181.7M8113.1%
cachetools.TTLCache653221.5M8873.4%
cacheing.LRUCache715201.4M8822.8%
cachebox.Cache1,0123941.0M86739.0%
cacheing.TTLCache1,697370.6M9182.2%
cachebox.RRCache3,842960.3M8822.5%
cachebox.VTTLCache4,1461070.2M9132.6%
cachebox.LRUCache4,1661330.2M8923.2%
cachebox.LFUCache4,2061430.2M9433.4%
cachebox.TTLCache4,6391110.2M9792.4%
cachebox.FIFOCache4,6831250.2M9262.7%

📊 Deletion

deletion

  • Performance Range: 8.6x difference between fastest and slowest
  • Best: dict (63ns, 15.9M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
dict63415.9M8226.6%
cachebox.Cache71214.1M8653.2%
cachebox.RRCache72313.8M8194.2%
cachebox.FIFOCache82312.1M8483.5%
lru.LRU88411.3M8294.8%
cachebox.LRUCache99810.1M8178.4%
cachebox.LFUCache10189.9M8048.1%
cachebox.TTLCache10859.3M8864.3%
cachebox.VTTLCache12897.8M8167.3%
cachetools.Cache162106.2M9306.0%
cacheing.LRUCache199125.0M9265.8%
cachetools.FIFOCache236124.2M9005.0%
cachetools.LRUCache238154.2M9486.1%
cacheing.LFUCache259153.9M9335.8%
cachetools.LFUCache270163.7M8536.1%
cacheing.RandomCache288343.5M91311.9%
cachetools.RRCache318393.1M93712.3%
moka_py.Moka467822.1M88917.5%
moka_py.Moka (lru)468762.1M87816.2%
cachetools.TTLCache510182.0M8773.5%
cacheing.TTLCache539261.9M8784.7%

📊 Popitem

popitem

  • Performance Range: 3972.9x difference between fastest and slowest
  • Best: cachebox.TTLCache (893ns, 1.1M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
cachebox.TTLCache8932041.1M97322.8%
cachebox.FIFOCache9181871.1M97020.4%
lru.LRU9891291.0M93013.0%
cachebox.LRUCache1,0731110.9M88110.4%
cacheing.LRUCache1,3871780.7M95512.8%
cachetools.FIFOCache1,9062460.5M95112.9%
cacheing.LFUCache1,9843000.5M97115.1%
cachetools.LRUCache2,0902870.5M97913.7%
cacheing.TTLCache2,0952990.5M95214.3%
cacheing.RandomCache2,7994030.4M96314.4%
cachetools.RRCache3,0523830.3M96812.5%
cachebox.RRCache7,2123,7570.1M99852.1%
cachetools.LFUCache16,1192420.1M8941.5%
cachebox.LFUCache31,1768480.0M9112.7%
cachebox.VTTLCache37,5539580.0M9222.6%
cachetools.TTLCache3,548,048162,8350.0M7474.6%

📊 Hash Collision

hash_collision

  • Performance Range: 7.3x difference between fastest and slowest
  • Best: cachebox.Cache (3838ns, 0.3M ops/sec)
ImplementationMean (ns)Std Dev (ns)Ops/secSamplesStability
cachebox.Cache3,8382,1290.3M100055.5%
cachebox.RRCache3,8942,1420.3M99455.0%
cachebox.VTTLCache4,1812,2960.2M98954.9%
cachebox.LRUCache4,2062,3500.2M98055.9%
cachebox.LFUCache4,2792,3620.2M99055.2%
lru.LRU4,4342,4460.2M96055.2%
cacheing.RandomCache4,4942,4510.2M99954.5%
dict4,5142,4660.2M100054.6%
cachebox.FIFOCache4,5372,5190.2M100055.5%
cachebox.TTLCache4,6252,6260.2M98956.8%
moka_py.Moka (lru)6,5323,5120.2M99953.8%
moka_py.Moka6,5883,4950.2M98653.1%
cachetools.FIFOCache8,8584,8870.1M99955.2%
cachetools.RRCache8,9114,9460.1M100055.5%
cachetools.Cache8,9354,9650.1M99955.6%
cacheing.LRUCache8,9364,9240.1M100055.1%
cacheing.TTLCache9,4134,8980.1M98452.0%
cachetools.LRUCache17,8369,9880.1M99756.0%
cachetools.TTLCache18,4909,9450.1M99353.8%
cacheing.LFUCache23,93013,3650.0M99755.8%
cachetools.LFUCache28,03115,2700.0M99854.5%

🚀 Usage

Prerequisites

uv sync

Run Benchmarks

# All benchmarks
python main.py
# Specific benchmark
python main.py insertion
python main.py lookup_existing

Understanding Results

  • 🟢 Excellent (A+): <2% noise ratio - Highly reliable measurements
  • 🟡 Good (A-B): 2-10% noise ratio - Acceptable reliability
  • 🔴 Poor (C-D): >10% noise ratio - Less reliable measurements

Performance Metrics:

  • Mean (ns): Average execution time in nanoseconds
  • Ops/sec: Operations per second (throughput)
  • Stability: Measurement consistency (lower noise = more stable)

About

Python caching libraries benchmark - which is better?

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages