Commit Graph

54 Commits

Author SHA1 Message Date
Jaime Martinez 38560f59f4
Delete expired items before setting
Check if an item exists and it has expired before setting so that
onEvicted is actually called.

Fixes #48.

Add test and split func

Use nanoseconds instead

Call onEvicted if item existed before setting

Call onEvicted if item.Expired
2020-10-15 10:57:29 +11:00
Patrick Mylund Nielsen 46f4078530 Fix incorrect key in concurrent benchmarks
Fixes #111
2019-10-04 15:21:08 -04:00
Patrick Mylund Nielsen 9f6ff22cff Fix benchmark for-loop shadowing 2018-05-27 00:33:50 -04:00
Alex Edwards 8c11fe2df0 Add GetWithExpiration 2016-12-08 14:50:49 +01:00
Patrick Mylund Nielsen 721cc9438c Add BenchmarkRWMutexInterfaceMapGetString 2015-12-03 09:55:58 -05:00
Patrick Mylund Nielsen 8c41258ef3 Add BenchmarkRWMutexInterfaceMapGet 2015-12-03 09:40:14 -05:00
Patrick Mylund Nielsen 7c1e7f5829 go fmt 2015-11-30 16:04:57 -05:00
Patrick Mylund Nielsen eb4f9f6b2f Use UnixNano int64s instead of Time 2015-11-30 13:54:01 -05:00
Patrick Mylund Nielsen a45ed98559 Add benchmarks that use expiring items (time.Now calls) and rename BenchmarkDeleteExpired to BenchmarkDeleteExpiredLoop for clarity 2015-11-30 10:45:30 -05:00
Patrick Mylund Nielsen 28ab885a1a Make BenchmarkDeleteExpired more meaningful 2015-11-28 15:13:26 -05:00
Patrick Mylund Nielsen cf4e165754 Add IncrementInt benchmark 2015-11-28 14:56:23 -05:00
Patrick Mylund Nielsen 901b2413ee Improve cache locality by removing Item-related pointers 2015-11-28 14:47:46 -05:00
Patrick Mylund Nielsen 3d4d09ca0b Add a benchmark for DeleteExpired() 2015-11-28 14:35:38 -05:00
Patrick Mylund Nielsen e9441b12e0 Add mutex-using test condition to TestOnEvicted 2015-11-28 12:22:52 -05:00
Patrick Mylund Nielsen 3f2c810ea1 Add OnEvicted() 2015-11-27 22:00:08 -05:00
Patrick Mylund Nielsen a0136a8980 Don't expose the cache mutex 2015-11-27 13:03:24 -05:00
Patrick Mylund Nielsen 03284ca422 Replace sharded hash function/misc mods 2014-12-22 10:37:59 -05:00
Patrick Mylund Nielsen 8a2f4f19ef go fmt 2014-12-22 02:48:52 -05:00
Patrick Mylund Nielsen 46827c6a61 Add NoExpiration and DefaultExpiration constants and use them (thanks to Jason Mooberry) 2014-12-22 01:46:22 -05:00
Patrick Mylund Nielsen 73a30b2033 Add NewFrom, and deprecate Save, SaveFile, Load, and LoadFile 2014-12-22 01:12:10 -05:00
Patrick Mylund Nielsen 2fb27e8369 Change the names of the MutexMap benchmarks to RWMutex to clarify the changes to the map benchmarks and the cache itself 2013-06-30 20:40:26 -04:00
Patrick Mylund Nielsen 155ab21e5d Use an RWMutex in the cache-equivalent map tests now that the cache uses one 2013-06-30 20:31:46 -04:00
Patrick Mylund Nielsen c9f5754801 Add O(1) ItemCount method to retrieve items currently in the cache map (whether expired and not cleaned up or not) 2013-04-18 14:32:01 -04:00
Patrick Mylund Nielsen d5d03c28d4 Add specialized increment and decrement methods 2013-04-18 14:24:30 -04:00
Patrick Mylund Nielsen 9cc10f6f2f Use a type switch instead, and Use unexported NewSharded in test 2012-08-17 11:35:20 +02:00
Patrick Mylund Nielsen 15cda21ff4 Add an interface, embed the mutex, and unexport some unnecessarily exported fields 2012-07-04 19:34:37 +01:00
Patrick Mylund Nielsen 52c269d8ae Testing a sharded cache. Could be useful for massively parallel applications 2012-06-22 09:24:09 +01:00
Patrick Mylund Nielsen 0f0584a805 Fix BenchmarkCacheSetDeleteSingleLock 'cheating' by unintentionally only locking once in the whole benchmark, rather than once per set and delete 2012-06-22 06:52:32 +01:00
Patrick Mylund Nielsen 803ceeaf1a Use runtime.numCPU() workers in concurrent benchmarks, remove pointless benchmarks for racy maps, and add replacement benchmarks using mutexed maps 2012-06-22 03:06:06 +01:00
Dustin Sallings fbcdb10061 Don't overparallelize the concurrent test. 2012-06-21 17:36:24 -07:00
Patrick Mylund Nielsen 84d15102eb Add test for concurrent cache.Get 2012-02-21 18:46:25 +01:00
Patrick Mylund Nielsen 91bd4334f1 Don't use defer for mutex unlocking (it currently adds ~200ns) 2012-02-17 01:40:55 +01:00
Patrick Mylund Nielsen 39b4f413a1 Don't format in t.Error() 2012-02-13 21:37:17 +01:00
Patrick Mylund Nielsen 6660155e6c gofmt 2012-02-12 01:54:16 +01:00
Patrick Mylund Nielsen b95b9110a4 Get ready for Go1 2012-02-12 00:15:25 +01:00
Patrick Mylund Nielsen eaf2373adf Add a test for file serialization and one to ensure objects expire even after having been serialized and reloaded 2012-01-29 05:30:35 +01:00
Patrick Mylund Nielsen 07aec145ba Add another child in structception test just to make sure 2012-01-29 04:43:26 +01:00
Patrick Mylund Nielsen 132462db11 Added test for structs within structs 2012-01-29 04:35:47 +01:00
Patrick Mylund Nielsen d5cd41da53 Note about channels being unserializable 2012-01-29 04:04:33 +01:00
Patrick Mylund Nielsen 98c2ce9eb4 Cache serialization 2012-01-29 03:16:59 +01:00
Patrick Mylund Nielsen e5b84e20fc Overflow/underflow tests 2012-01-04 10:48:21 +01:00
Patrick Mylund Nielsen ac4bda9dea BenchmarkCacheSetDeleteSingleLock to get an idea of mutex impact 2012-01-04 10:06:31 +01:00
Patrick Mylund Nielsen e46251e025 A few benchmarks vs. normal maps 2012-01-04 09:55:32 +01:00
Patrick Mylund Nielsen 9e6775b151 Back to weekly 2012-01-04 09:11:27 +01:00
Patrick Mylund Nielsen 62a061f1f4 Add/Replace atomicity for r60.3 2012-01-04 09:09:39 +01:00
Patrick Mylund Nielsen c6060554ee Back to following weekly 2012-01-04 08:07:50 +01:00
Patrick Mylund Nielsen 1f826dd9de Compatability with 60.3 2012-01-04 07:54:23 +01:00
Patrick Mylund Nielsen c84223dab4 Typo 2012-01-02 17:26:17 +01:00
Patrick Mylund Nielsen 746fe067c4 Delete and Flush tests 2012-01-02 14:18:25 +01:00
Patrick Mylund Nielsen ca7e0d4f78 gofmt and redundant 'if it was enabled' 2012-01-02 14:11:17 +01:00