首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

面对微处理器缓存,一些旧有的性能优化技巧已然失效

2012-10-31 
面对处理器缓存,一些旧有的性能优化技巧已然失效请注意,本文不是讲解处理器缓存,如果你对cpu cache这个概

面对处理器缓存,一些旧有的性能优化技巧已然失效

请注意,本文不是讲解处理器缓存,如果你对cpu cache这个概念不清楚,请先Google一下。
另外,本文主要针对像 C,C++ 这种产生机器码的语言的,对于像 Java,.Net 这样的字节码语言,这里所说的可能无效,至少我没研究过。

首先说说我所说的这些旧有的优化技巧从哪里来的。
原因很简单,如果你像我一样,多年只用 J2ME,或者 Flash 这样的技术开发,你是不太可能会关心处理器缓存的,而是用一些其它的性能技巧,这些技巧遇到处理器缓存问题,就失效了。
再如果你的CPU,汇编,优化知识像我一样仍停留在 80386 时代,你我掌握的优化技巧断然也是过时的。

失效技巧一,使用预先计算好的变量或者查找表

现在来怎么用查找表来计算一个32位整数里位为1的个数。

    ObjectA * objA;    ObjectB * objB;    for(int i = 0; i < 100; ++i) {        // 对 objA 做点事    }    for(int i = 0; i < 100; ++i) {        // 对 objA 做点别的事    }    for(int i = 0; i < 100; ++i) {        // 对 objB 做点事    }
?

则指令缓存和数据缓存都会觉得很高兴,自然也就工作快一点了。

总结:
虽然上面这些技巧会失效,并不意味这些技巧是错的,很多情况下也可能真的有效。而且处理器缓存这东西优化起来不定因素很大,并无不变之规,所以具体做时还要仔细测试,方能知道哪种方法好。

热点排行