• Ganesh Ajjanagadde's avatar
    lavc/cbrt_tablegen: speed up tablegen · 07a11ebc
    Ganesh Ajjanagadde authored
    This exploits an approach based on the sieve of Eratosthenes, a popular
    method for generating prime numbers.
    
    Tables are identical to previous ones.
    
    Tested with FATE with/without --enable-hardcoded-tables.
    
    Sample benchmark (Haswell, GNU/Linux+gcc):
    prev:
    7860100 decicycles in cbrt_tableinit,       1 runs,      0 skips
    7777490 decicycles in cbrt_tableinit,       2 runs,      0 skips
    [...]
    7582339 decicycles in cbrt_tableinit,     256 runs,      0 skips
    7563556 decicycles in cbrt_tableinit,     512 runs,      0 skips
    
    new:
    2099480 decicycles in cbrt_tableinit,       1 runs,      0 skips
    2044470 decicycles in cbrt_tableinit,       2 runs,      0 skips
    [...]
    1796544 decicycles in cbrt_tableinit,     256 runs,      0 skips
    1791631 decicycles in cbrt_tableinit,     512 runs,      0 skips
    
    Both small and large run count given as this is called once so small run
    count may give a better picture, small numbers are fairly consistent,
    and there is a consistent downward trend from small to large runs,
    at which point it stabilizes to a new value.
    Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
    07a11ebc
cbrt_tablegen.h 2.38 KB