# What did work: ## Removing a double calculation when step I changed `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]+ 0.25*previous[(i+1) % size];` to `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]*2;` in step This made all the improvement as far as i can tell ## In shift_centre_to_origin compute the ratio before the for loop ``` const float ratio = sum/size; for(long i = 0; i < size; i++) config[i] -= ratio; ``` This did not make a noticable difference # What did not work and actually made it slower: - Trying to find a fancy way to get a random bool in stochastic_unit_step - Using the std::minmax_element function in elongation - Changing the step function to be a void that changed the array directly made it about 8 secounds slower # Compiler optimizations I treid these flags: -Ofast -march=native -flto -fno-signed-zeros -fno-trapping-math The improvements were in the margin of error # Speedup I got at best a 1.1 times speedup. See 12_speedup.png