multithreading - 64位机器,int64和int16的性能

标签 multithreading performance caching

我有64位机器,一些数据集在-32000:32000范围内,所以int16_t足以存储它。

问题:

  1. 如果是64位机器,那么int64_t上的操作是原子的,并且成本(就速度而言)与int16_t上的操作相同?如果是这样,以 64 位存储数据可以节省空间,但不能节省速度?

  2. 对于并行应用程序,我实际上可以通过存储在 int16_t 中来节省速度,因为缓存也是 64 位的,并且我在缓存中存储的数据更多- 线程访问它的速度越快?

是吗?

最佳答案

如果您的编译器可以将您的代码转换为使用 SSE 或 AVX,则使用 64 位整数而不是 16 位整数理论上会使您的代码速度减慢最多 4 倍。 即使您的编译器无法自行进行此优化,您也可以手动转换代码以使其使用 SSE,并以这种方式获得良好的加速。

如果您无法使用 SSE,那么使用 32 位整数可能是最好的选择,因为您仍然需要更少的内存,并且 64 位 CPU 仍然经过优化,可以像处理 64 位值一样快地处理 32 位值,因为许多程序尚未使用 64 位。

关于multithreading - 64位机器,int64和int16的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8033933/

相关文章:

multithreading - Dlang,Socket,聊天服务器

Android - 如何使 Activity 加载更快?

performance - Nuget Pack 性能低下

django - Django 中的分层缓存

caching - 查找处理器的多级缓存的 AMAT 和 CPI

c# - 在后台运行作业

multithreading - 基本的QT事件处理/线程问题?

java - 无响应的actor系统: ThreadPoolExecutor dispatcher only creates core thread pool,显然会忽略最大线程池大小

performance - 附加到向量的效率

ruby-on-rails - 使用 Rails,如何使浏览器的缓存过期?