优化策略
文章平均质量分 85
RLib
http://blog.csdn.net/rrrfff
展开
-
通用型C/C++程序性能测试Benchmark的简单实现
在完成一个算法的改进后, 除了人工估算时间复杂度外, 我们可能还希望直观地检测改进效果, 现有的性能分析工具比如Intel® VTune™ Amplifier自然满足需求, 然而有时候使用第三方工具的成本却可能超出我们的所需(也许我们仅仅需要大概地对比便能得到结果), 或者我们希望能在代码中控制测试流程, 这时写一个Benchmark便是首选了. 本文实现了一个简单的通用型Benchm原创 2015-04-11 17:30:48 · 29987 阅读 · 0 评论 -
内存伪共享(False Sharing)
博主注:在考虑优化多线程并发的内存使用场景时, 由于CPU缓存机制不尽相同, 建议至少确保有128字节距离, 一般通过设置不使用哑元(dummy)或者跨区分配来避免命中同一缓存行, 以减少不同处理器由于缓存行相同造成的缓存行频繁载入和剔除的性能消耗. 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个原创 2015-04-11 10:24:29 · 17990 阅读 · 0 评论 -
分支预测(Branch Prediction)
分支预测(Branch Prediction)是现代处理器用来提高CPU执行速度的一种手段, 其对程序的分支流程进行预测, 然后预先读取其中一个分支的指令并解码来减少等待译码器的时间.原创 2015-04-11 10:58:40 · 35054 阅读 · 1 评论 -
AVX指令集中的32种浮点比较关系详解
在传统印象中,数字的比较关系只有6种。但在AVX指令集中,Intel一下给出了32种浮点比较谓词,详见下图--(Intel手册:Table 3-9. Comparison Predicate for VCMPPD and VCMPPS Instructions) 为什么会有这么多种比较谓词呢?我为此困惑困惑了很久。 直到最近翻阅了不少资料后,才终于将它们弄懂了。一、转载 2012-08-05 12:43:27 · 55723 阅读 · 0 评论 -
Microsoft Visual Studio 2017 Supports Intel® AVX-512
Intel® AVX-512提供了32个程序可见的512位宽向量寄存器以及8个专用屏蔽寄存器, 支持的数据宽度是AVX/AVX2的两倍并能和AVX保持完美兼容而不带来性能损失, 是向512位SIMD支持跨出的巨大飞跃。VS 2017 v15.3也宣布增加了对Intel® AVX-512的编程支持,在这篇文章中,对比了未优化的C版本快速排序和使用Intel® AVX-512指令优化的快速排序,后者的性能平均提升了近十倍转载 2017-07-28 02:13:18 · 19659 阅读 · 0 评论