diff --git a/benchmarks/__init__.py b/benchmarks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/asynchronous.py b/benchmarks/asynchronous.py new file mode 100644 index 0000000..27a5365 --- /dev/null +++ b/benchmarks/asynchronous.py @@ -0,0 +1,60 @@ +import asyncio +from string import ascii_lowercase +from timeit import timeit + +from aiocache.backends.redis import RedisCache +from aiocache.backends.memory import SimpleMemoryCache +from shared_memory_dict.caches.aiocache import SharedMemoryCache + +loop = asyncio.get_event_loop() + +cache_smc_aiocache = SharedMemoryCache(size=64) +cache_aiocache_redis = RedisCache(loop=loop) +cache_aiocache_memory = SimpleMemoryCache() + + +async def agressive(cache): + for c in ascii_lowercase: + for i in range(5): + await cache.set(f'{c}{i}', '1') + for i in range(10, 0, -1): + await cache.get(f'{c}{i}') + + +async def fun(cache): + await cache.set('fun', 'uhull') + for _ in range(3): + await cache.get('fun') + + +def collect(cache_var_name): + time_of_agressive = timeit( + stmt=f'loop.run_until_complete(agressive({cache_var_name}))', + number=100, + globals=globals() + ) + time_of_fun = timeit( + stmt=f'loop.run_until_complete(fun({cache_var_name}))', + number=100, + globals=globals() + ) + + return { + 'agressive': time_of_agressive, + 'fun': time_of_fun + } + + +if __name__ == '__main__': + caches = { + k: collect(k) + for k in globals().keys() + if k.startswith('cache_') + } + + print('Bench Against Async Solutions') + for k, v in caches.items(): + print(f'Cache Type : {k}:') + print(f'agressive : {v["agressive"]}') + print(f'fun : {v["fun"]}') + print('') diff --git a/benchmarks/fake_django_settings.py b/benchmarks/fake_django_settings.py new file mode 100644 index 0000000..739bcbe --- /dev/null +++ b/benchmarks/fake_django_settings.py @@ -0,0 +1 @@ +SECRET_KEY = 'bla' diff --git a/benchmarks/sync.py b/benchmarks/sync.py new file mode 100644 index 0000000..dc09784 --- /dev/null +++ b/benchmarks/sync.py @@ -0,0 +1,55 @@ +from string import ascii_lowercase +from timeit import timeit + +from django.core.cache.backends.locmem import LocMemCache +from django_redis.cache import RedisCache +from shared_memory_dict.caches.django import SharedMemoryCache + +cache_smc_django = SharedMemoryCache( + 'django', params={'OPTIONS': {'MEMORY_BLOCK_SIZE': 64}} +) +cache_django_redis = RedisCache(server='redis://127.0.0.1:6379/1', params={}) +cache_django_locmem = LocMemCache('locmem', params={}) + + +def agressive(cache): + for c in ascii_lowercase: + for i in range(5): + cache.set(f'{c}{i}', '1') + for i in range(10, 0, -1): + cache.get(f'{c}{i}') + + +def fun(cache): + cache.set('fun', 'uhull') + for _ in range(3): + cache.get('fun') + + +def collect(cache_var_name): + time_of_agressive = timeit( + stmt=f'agressive({cache_var_name})', number=100, globals=globals() + ) + time_of_fun = timeit( + stmt=f'fun({cache_var_name})', number=100, globals=globals() + ) + + return { + 'agressive': time_of_agressive, + 'fun': time_of_fun + } + + +if __name__ == '__main__': + caches = { + k: collect(k) + for k in globals().keys() + if k.startswith('cache_') + } + + print('Bench Against Sync Solutions') + for k, v in caches.items(): + print(f'Cache Type : {k}:') + print(f'agressive : {v["agressive"]}') + print(f'fun : {v["fun"]}') + print('')