Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么更快?两个整数还是64?_C++_Performance - Fatal编程技术网

C++ 什么更快?两个整数还是64?

C++ 什么更快?两个整数还是64?,c++,performance,C++,Performance,什么更快:(性能) 或 ? 或者它们是相等的?\uu int64在大多数平台上应该更快,但要小心——有些架构需要与8对齐才能生效,有些架构如果不对齐,甚至会使应用程序崩溃。,因此,尽管它可能更快,也可能更快,但如果需要跨平台代码,您不想使用它。相反,您可以使用uint64_t等。这些源于C99标准,该标准为固定宽度整数算法提供stdint.h和inttypes.h 就性能而言,这取决于您所在的系统-x86_64例如,在添加32位和64位整数时不应看到任何性能差异,因为add指令可以处理32位或6

什么更快:(性能)

?


或者它们是相等的?

\uu int64在大多数平台上应该更快,但要小心——有些架构需要与8对齐才能生效,有些架构如果不对齐,甚至会使应用程序崩溃。

,因此,尽管它可能更快,也可能更快,但如果需要跨平台代码,您不想使用它。相反,您可以使用
uint64_t
等。这些源于C99标准,该标准为固定宽度整数算法提供
stdint.h
inttypes.h

就性能而言,这取决于您所在的系统-
x86_64
例如,在添加32位和64位整数时不应看到任何性能差异,因为
add
指令可以处理32位或64位寄存器

但是,如果在32位平台上运行代码或为32位体系结构编译代码,添加64位整数实际上需要添加两个32位寄存器,而不是一个。因此,如果您不需要额外的空间,那么分配它将是浪费


我不知道编译器是否能够或确实在必要时将类型优化到更小的大小。我想不会,但我不是编译工程师。

我讨厌这类问题

1) 如果你不知道如何为自己衡量,那么你几乎肯定不需要知道答案

2) 在现代处理器上,很难预测基于单个指令的速度,了解程序的缓存使用情况和总体性能比优化使用赋值的愚蠢代码片段更重要。让编译器担心这一点,并花时间改进所使用的算法或其他会产生更大影响的事情


简言之,你可能不知道,也可能没关系。这是一个愚蠢的问题。

编译器的优化器将删除示例中的所有代码,这样就没有区别了。我想您想知道一次移动32位数据还是一次移动64位数据更快。如果您的数据与8字节对齐,并且您在64位计算机上,那么一次移动8字节的数据应该会更快。然而,有几个警告。您可能会发现编译器已经在为您进行此优化(您必须查看发出的汇编代码才能确定),在这种情况下,您不会看到任何差异。另外,如果你移动大量数据,考虑使用MeMCPY而不是滚动自己。如果您正在考虑将32位整数的数组强制转换为64位,以便更快地复制或更快地执行其他操作(即指令数的一半),请确保在不了解体系结构和编译器的情况下搜索。

无法明确回答此问题。然而,第一个将至少和第二个一样快。另一方面,编译器可以优化第二对赋值,使其与第一对赋值一样快。它们是完全不同的。哪一个更快的问题根本不适用。你在把苹果和桔子做比较。如果你想要速度,为什么不使用
int\u fast64\u t
?“…两个64位整数的加法实际上需要添加两个32位寄存器,而不是一个。”我认为这是一个输入错误。。。
__int64 x,y;
x=y;
int x,y,a,b;
x=a;
y=b;