mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
LRU: use C99 variable len stack array in evictionPoolPopulate().
This commit is contained in:
parent
2a1247309a
commit
3b9495d20d
12
src/evict.c
12
src/evict.c
@ -115,16 +115,7 @@ struct evictionPoolEntry *evictionPoolAlloc(void) {
|
||||
#define EVICTION_SAMPLES_ARRAY_SIZE 16
|
||||
void evictionPoolPopulate(dict *sampledict, dict *keydict, struct evictionPoolEntry *pool) {
|
||||
int j, k, count;
|
||||
dictEntry *_samples[EVICTION_SAMPLES_ARRAY_SIZE];
|
||||
dictEntry **samples;
|
||||
|
||||
/* Try to use a static buffer: this function is a big hit...
|
||||
* Note: it was actually measured that this helps. */
|
||||
if (server.maxmemory_samples <= EVICTION_SAMPLES_ARRAY_SIZE) {
|
||||
samples = _samples;
|
||||
} else {
|
||||
samples = zmalloc(sizeof(samples[0])*server.maxmemory_samples);
|
||||
}
|
||||
dictEntry *samples[server.maxmemory_samples];
|
||||
|
||||
count = dictGetSomeKeys(sampledict,samples,server.maxmemory_samples);
|
||||
for (j = 0; j < count; j++) {
|
||||
@ -175,7 +166,6 @@ void evictionPoolPopulate(dict *sampledict, dict *keydict, struct evictionPoolEn
|
||||
pool[k].key = sdsdup(key);
|
||||
pool[k].idle = idle;
|
||||
}
|
||||
if (samples != _samples) zfree(samples);
|
||||
}
|
||||
|
||||
int freeMemoryIfNeeded(void) {
|
||||
|
Loading…
Reference in New Issue
Block a user