loop fission and fusion branchless programming SIMD CPU CPU cache pipeline hazard Memory Decreasing the Number of Memory Accesses Morton order Measuring performance profiling benchmarking