首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代器效率:指针比较或计数器

迭代器效率:指针比较或计数器
EN

Stack Overflow用户
提问于 2015-12-10 10:51:28
回答 1查看 53关注 0票数 0

对于非常简单的迭代器或内存范围内的迭代循环,可以使用以下两种方法(简单C中的代码类似于底层机器指令):

柜台:

代码语言:javascript
复制
int a[10]; int *p=a; cnt = 10;
do{ 
    foo(*p++); /* loop action */
    cnt--;
} while( cnt > 0);

指针:

代码语言:javascript
复制
int a[10]; int *p=a; int *stop=a+10;
do{
    foo(*p++); /* loop action */
} while( p < stop);

虽然后一种版本似乎少了一条指令,但在我的旧内存中的大多数机器上,都有一个“减少寄存器和跳转(如果不是零)”指令,它的速度(甚至比指针比64位指针和32位数据对象更快)更快。这两个版本中哪一个在AMD64和ARM/ARM 64上会更快?是否有比较指针和分支-如果没有指令?

EN

Stack Overflow用户

回答已采纳

发布于 2015-12-10 13:16:48

分析您的应用程序,看看不同的循环是否会产生不同的效果。

在现代CPU中,瓶颈是内存访问延迟,而不是指令吞吐量。真正不同的是优化内存访问以避免CPU缓存丢失。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34200000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档