当前位置:  开发笔记 > 编程语言 > 正文

使用int而不是size_t索引来访问向量元素的性能降低了吗?

如何解决《使用int而不是size_t索引来访问向量元素的性能降低了吗?》经验,为你挑选了1个好方法。

如果我使用intindex来访问vector元素,它会将整数转换为size_t,然后调用operator[](size_t)函数吗?是否有任何性能下降?



1> dasblinkenli..:

之间的主要区别intsize_tint签署,同时size_t是无符号.另外,两者可以具有不同的大小,因为两种类型都是特定于平台的并且彼此独立.

当两个大小相同时,从intto 转换size_t为no-op,因此没有性能影响.

当尺寸是不同的,该编译器足够聪明来传递的部分或展开的值int索引到operator []服用size_t几乎没有开销,因为缩小尺寸需要一个部分负荷,同时扩大了尺寸需要装载零的上部.但是请注意,为扩展值的上半部分写入零不是附加操作,因为它取代了从size_t类型索引复制上部.

因此,答案是否定的,你不会看到任何性能差异.


我的分析结果与您的分析相矛盾.这不是最新的编译器,所以可能已经改进了一些未定义行为的优化来修复这种效果.缺乏这一点,编译器在许多情况下允许负`int`,因此它签名扩展而不是零扩展,并且在x86_64中,符号扩展的效率远低于零扩展.
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有