joabj writes "Virginia Tech researchers have found that the performance of programs running on multicore processors can vary from server to server, and even from core to core. Factors such as which core handles interrupts, or which cache holds the needed data can change from run to run. Such resources tend to be allocated arbitrarily now. As a result, program execution times can vary up to 10 percent. So if you're wondering why your code ran faster yesterday than today, and you're running it on a multiucore processor, you may want to take a look at how the CPU is handling the processes. The good news is that the VT researchers are working on a library that will recognize inefficient behavior and rearrange things in a more timely fashion."
Link to Original Source