Tag: int64

在32位系统上使用int64_t而不是int32_t会有什么样的性能影响?

我们的C ++库目前使用time_t来存储时间值。 在某些地方,我开始需要亚秒级精度,所以无论如何需要更大的数据types。 另外,在某些地方解决2038年问题也许是有用的。 所以我正在考虑完全切换到一个具有底层int64_t值的单个Time类,以取代所有地方的time_t值。 现在我想知道在32位操作系统或32位CPU上运行此代码时,这种更改对性能的影响。 IIUC编译器将生成使用32位寄存器执行64位算术的代码。 但是如果速度太慢,我可能不得不采用更加差异化的方式来处理时间值,这可能会使软件更难以维护。 我感兴趣的是: 哪些因素影响这些操作的性能? 可能是编译器和编译器的版本; 但操作系统或CPU制造商/型号是否也影响了这一点? 一个普通的32位系统将使用现代CPU的64位寄存器吗? 哪些操作在32位模拟时特别慢? 还是哪个几乎没有放缓? 在32位系统上使用int64_t / uint64_t是否有任何现有的基准testing结果? 有没有人有这种性能影响的自己的经验? 我主要对Intel Core 2系统上Linux 2.6(RHEL5,RHEL6)上的g ++ 4.1和4.4感兴趣; 但是也能很好地了解其他系统的情况(如Sparc Solaris + Solaris CC,Windows + MSVC)。