相关疑难解决方法(0)

C++ int vs 64位机器中的long long

我的计算机有64位处理器,并且当我寻找sizeof(int),sizeof(long)以及sizeof(long long),事实证明,INT为32位,和长长为64位.我研究了原因,看来普遍的假设是说C++ 中的int符合机器的字大小是错误的.据我所知,编译器需要定义大小,我的是Mingw-w64.我研究的原因是理解如果小于字大小的类型的使用有利于速度(例如,int)或它是否具有负面影响.在32位系统中,一种流行的观点是:由于字大小为int,short将被转换为int,这将导致额外的位移等,从而导致更差的性能.反对意见是缓存级别会有好处(我没有深入研究),使用short会对虚拟内存经济有用.所以,除了这种困境之间的混淆之外,我还面临着另一个问题.我的系统是64位,如果我使用intshort并不重要,它仍然会小于字大小,我开始认为使用64位长的长度不是很有效,因为它是在系统设计的级别.另外我读到还有另一个约束,即OS的库(ILP64,LP64),它定义了类型大小.在ILP64中,与LP64相比,默认int为64位,如果我使用支持ILP64的操作系统,它会加速程序吗?一旦我开始询问我应该使用哪种类型来加速我的C++程序,我就面临更深层次的主题,其中我没有专业知识,而且一些解释似乎相互矛盾.你能解释一下:

1)如果最佳做法是在x64中使用long long来实现最高性能,即使对于1-4字节数据也是如此?

2)使用小于字大小的类型(内存胜利与附加操作)的权衡

3)word和int size是64位的x64计算机是否有可能通过使用所谓的向后兼容性使用16位字大小来处理短路?或者它必须将16位文件放入64位文件中,并且可以完成的事实将系统定​​义为向后兼容.

4)我们可以强制编译器使int 64位?

5)如何将ILP64整合到使用LP64的PC中?

6)使用适用于其他编译器,操作系统和体系结构(32位处理器)的上述问题的代码可能存在哪些问题?

c++ memory performance cpu-word 32bit-64bit

17
推荐指数
1
解决办法
7460
查看次数

标签 统计

32bit-64bit ×1

c++ ×1

cpu-word ×1

memory ×1

performance ×1