#include <iostream>
#include <tr1/random>
#include <chrono>
#include <algorithm>
/*!
*延迟转移:CPU在执行条件判断的时候为了保证管线的流水,会
* 对指定进行预判执行,如果判断成功则流程继续,否则判断失败
* 会从条件判断正确的地方加载代码到流水管线中执行
* (从数据可见,有时候我们在for循环中使用判断逻辑的时候,如果
* 能增加判断概率是可以提高性能的,之前为认为肯定是不排序快,
* 实际情况是排序比不排序快),一半如果预判错误导致的代价会
* 慢10~20个CPU的时钟周期。
*
* 测试结果
=========DEBUG=========
统计数据量:32768
未排序的执行效率
sum=3.1558e+06 耗时=14115322ns
采用算数计算的效率
sum=3.1558e+06 耗时=256719ns
排序后的执行效率
sum=3.1558e+06 耗时=352787ns
========Release==========
统计数据量:32768
未排序的执行效率
sum=3.1558e&
#include <tr1/random>
#include <chrono>
#include <algorithm>
/*!
*延迟转移:CPU在执行条件判断的时候为了保证管线的流水,会
* 对指定进行预判执行,如果判断成功则流程继续,否则判断失败
* 会从条件判断正确的地方加载代码到流水管线中执行
* (从数据可见,有时候我们在for循环中使用判断逻辑的时候,如果
* 能增加判断概率是可以提高性能的,之前为认为肯定是不排序快,
* 实际情况是排序比不排序快),一半如果预判错误导致的代价会
* 慢10~20个CPU的时钟周期。
*
* 测试结果
=========DEBUG=========
统计数据量:32768
未排序的执行效率
sum=3.1558e+06 耗时=14115322ns
采用算数计算的效率
sum=3.1558e+06 耗时=256719ns
排序后的执行效率
sum=3.1558e+06 耗时=352787ns
========Release==========
统计数据量:32768
未排序的执行效率
sum=3.1558e&