• Vladislav Vaintroub's avatar
    LP1008334 : Speedup specific datetime queries that got slower with... · afe1ef5e
    Vladislav Vaintroub authored
    LP1008334 : Speedup specific datetime queries that got slower with introduction of microseconds in 5.3
    
    - Item::get_seconds() now skips decimal arithmetic, if decimals is 0. This significantly speeds up from_unixtime() if no fractional part is passed.
    - replace sprintfs used to format temporal values  by hand-coded formatting 
      
    Query1 (original query in the bug report)
    BENCHMARK(10000000,DATE_SUB(FROM_UNIXTIME(RAND() * 2147483648), INTERVAL (FLOOR(1 + RAND() * 365)) DAY)) 
      
    Query2 (Variation of query1 that does not use fractional part in FROM_UNIXTIME parameter)
    BENCHMARK(10000000,DATE_SUB(FROM_UNIXTIME(FLOOR(RAND() * 2147483648)), INTERVAL (FLOOR(1 + RAND() * 365)) DAY)) 
      
    Prior to the patch, the runtimes were (32 bit compilation/AMD machine)
    Query1: 41.53 sec 
    Query2: 23.90 sec
      
    With the patch, the runtimes are
    Query1: 32.32 sec (speed up due to removing sprintf)
    Query2: 12.06 sec (speed up due to skipping decimal arithmetic)
    afe1ef5e
item.cc 246 KB