Skip to content
  • Timothy Arceri's avatar
    util/disk_cache: compress individual cache entries · 85a9b1b5
    Timothy Arceri authored
    
    
    This reduces the cache size for Deus Ex from ~160M to ~30M for
    radeonsi (these numbers differ from Grigori's results below
    probably due to different graphics quality settings).
    
    I'm also seeing the following improvements in minimum fps in the
    Shadow of Mordor benchmark on an i5-6400 CPU@2.70GHz, with a HDD:
    
    no-cache:                    ~10fps
    with-cache-no-compression:   ~15fps
    with-cache-and-compression:  ~20fps
    
    Note: The with cache results are from the second run after closing
    and opening the game to avoid the in-memory cache.
    
    Since we mainly care about decompression I went with
    Z_BEST_COMPRESSION as suggested on irc by Steinar H. Gunderson
    who has benchmarked decompression speeds.
    
    Grigori Goronzy provided the following stats for Deus Ex: Mankind
    Divided start-up times on a Athlon X4 860k with a SSD:
    
    No Cache                                 215 sec
    
    Cold Cache zlib BEST_COMPRESSION         285 sec
    Warm Cache zlib BEST_COMPRESSION         33 sec
    
    Cold Cache zlib BEST_SPEED               264 sec
    Warm Cache zlib BEST_SPEED               33 sec
    
    Cold Cache no compression                266 sec
    Warm Cache no compression                34 sec
    
    The total cache size for that game is 48 MiB with BEST_COMPRESSION,
    56 MiB with BEST_SPEED and 170 MiB with no compression.
    
    These numbers suggest that it may be ok to go with Z_BEST_SPEED
    but we should gather some actual decompression times before doing
    so. Other options might be to do the compression in a separate
    thread, this might allow us to use a higher compression algorithim
    such as LZMA.
    
    Reviewed-by: default avatarGrigori Goronzy <greg@chown.ath.cx>
    Acked-by: default avatarMarek Olšák <marek.olsak@amd.com>
    85a9b1b5