对一个大的数组去做一些判断和修改,比如
const int size = 100000;
int array[size] ;
for(int i = 0; i < size; ++i)
{
array[i] = rand() % 1280;
}
//std::sort(arrar, array+size); 会影响到cpu的预测。一旦排除了,cpu的预测几乎都会成功
long loong nResult = 0;
for(int i = 0; i < size; ++i)
{
// nResult += (array[i] / 128) * array[i]; 不排序的话,这个可能只执行更加快的,让for去做优化
if( array[i] > 128)
{
nResult += array[i];
}
}
以上的代码,在for循环里面去做if判断,然后做操作,因为array的内容是没有排序的,所以cpu的分支预测很多时候可能都会失败,如果先array去排序,那么for循环的执行速度会非常的快。就是注释的排序函数