• Viktor Söderqvist's avatar
    Optimize quicklistIndex to seek from the nearest end (#9454) · 547c3405
    Viktor Söderqvist authored
    Until now, giving a negative index seeks from the end of a list and a
    positive seeks from the beginning. This change makes it seek from
    the nearest end, regardless of the sign of the given index.
    
    quicklistIndex is used by all list commands which operate by index.
    
    LINDEX key 999999 in a list if 1M elements is greately optimized by
    this change. Latency is cut by 75%.
    
    LINDEX key -1000000 in a list of 1M elements, likewise.
    
    LRANGE key -1 -1 is affected by this, since LRANGE converts the
    indices to positive numbers before seeking.
    
    The tests for corrupt dumps are updated to make sure the corrup
    data is seeked in the same direction as before.
    547c3405
quicklist.c 107 KB