Performance Matters

https://youtu.be/r-TLSBdHe1A

  • Modern-day computing is concurrent and non-linear
  • Moore’s Law has not been holding for awhile
    • Can no longer dissipate enough heat
    • Solution is to use more cores
  • Processors also do an in-ordinate amount of hardware optimization
    • caching
    • branch prediction
  • Because of this, many weird things affect the performance of programs
    • “Layout biases measurement” Mytkowicz et al. (APLOS ‘09)
    • almost anything that changes memory layout will impact performance
    • upgrading dependencies
    • manual memory allocation (malloc)
    • path length
    • the order in which programs are linked during compilation
      • can actually speed up programs more than turning on an optimization flag (like -O3)
      • changes function addresses
    • environment variables size
      • moves program stack
  • Most profiling assumes end-to-end optimization
  • Speaker’s lab created “Stabilizer” to minimize the effects of layout during profiling (ie eliminate randomness)
    • The tool repeatedly randomizes layout while executing
    • changes function addresses, stack frame size, heap allocations
    • most profiling done today is like surveying one person over and over again: the underlying layout hasn’t changed.
    • Uses null hypothesis testing
      • What is the probability that the difference in performance measurement between two programs is due to randomness?
        • If the null hypothesis is true, the two measurements are equal and randomness caused the difference
        • If the null hypothesis is false, measurements are actually different