- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CCPPPP--SSuummmmiitt
C++ Summit 2020 从纳秒级优化谈CPU
眼里的好代码
CPP-Summit 2020
张银奎
• Raymond Zhang
• 20年编程经历
• 格蠹科技
• 2003.5 ~ 2016.12 INTEL
• 2005年参加第一届C++大会
• 《异常处理得与失》
• 《软件调试》作者
• + 《格蠹汇编》
• 译作
• 《21世纪机器人》
• 《机器学习》
• 《数据挖掘原理》
• 《人工智能——求解复杂问题的方法和策略》
• 《观止——微软创建NT和未来的夺命狂奔》
• 《现代x86汇编语言程序编程》 苏轼 : “问汝平生功业 ,黄州惠州儋州。”
c0 299792.458km/s CCPPPP--SSuummmmiitt
1纳秒时间里光在真空中只可以行进大约30CM
CCPPPP--SSuummmmiitt
问题 1:
CPU执行下面两条语句的速度一样么?
A B * 0.01;
A B / 100.0;
float ge_mul_div(int count) CCPPPP--SSuummmmiitt
{
int ret 0;
uint64_t start, end;
float sum 0;
start __rdtsc();
for (int n 0; n count; n++)
sum + (n*0.01);
end __rdtsc();
cout sum of i*0.01 count took end - start ticks. sum endl;
sum 0;
start __rdtsc();
for (int n 0; n count; n++)
sum + (n / 100.0);
end __rdtsc();
cout sum of i/ 100.0 count took end - start ticks. sum endl;
return sum;
}
CCPPPP--SSuummmmiitt
实验 1
• 把循 环 变量 i与 0 .0 1相乘 1百万次 用 时大 约 8毫秒
• 把循 环 变量 i除以 100 .0 , 1百万次 用 时大 约 12毫秒
• 把 i / 100 .0改为等价 的 I * 0 .0 1可 以提 高速度 ( 12 -8)/ 12 = 33%
文档评论(0)