我正在编写一个性能相当关键的应用程序。我有点困惑,不知道哪种数据类型是x64 CPU最有效的数据类型。
MDSN说"In some cases, the common language runtime can pack your Short variables closely together and save memory consumption."和"The Integer data type provides optimal performance on a 32-bit processor"
我使用大量数据(参差不齐的array10中平均约500万个值或更多128,128个值)来实时生成位图(数据值的热图)。所有的数据点都是200到3500之间的整数,所以我可以使用短整型。哪一个是最有效的?
谢谢。
发布于 2015-09-23 18:23:51
在32位和64位应用程序中,Int32类型对于常规变量(例如循环计数器)是最有效的。
当您处理大型数据数组时,读/写单个值的效率并不重要,重要的是访问数据,以便获得尽可能少的内存缓存未命中。与访问缓存的内存相比,内存缓存未命中的代价非常高。(此外,与内存缓存未命中相比,页面错误(内存交换到磁盘)的开销非常大。)
为了避免缓存未命中,您可以尽可能紧凑地存储数据,并且在处理数据时,您可以尽可能线性地访问它,以便您访问的内存区域尽可能小。
对于任何大到足以跨越多个缓存块的阵列,使用Int16最有可能比使用Int32更有效,而且缓存块通常只有几千字节。
由于您的值可以只存储在12位中,因此将每个值存储在1.5字节中可能会更有效,尽管这意味着需要更多处理数据。减少25%的数据大小可能足以弥补额外的处理。
发布于 2015-09-23 18:04:15
一般来说,变量使用的内存越少,它的处理速度就越快,并且内存管理也会更好,因为您的应用程序将使用更少的内存。
Short只需要整数所需内存的一半,如果你只需要一个16位的数字,并且你确信它永远不会更大,那么使用Short。
https://stackoverflow.com/questions/32736202
复制相似问题