【发布时间】:2015-12-20 13:43:58
【问题描述】:
我正在编写一个性能相当关键的应用程序。对于 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"
我正在使用大量数据(锯齿状数组中的平均大约 500 万个值[10 或更多][30][128,128])实时生成位图(数据值的热图)。所有数据点都是 200 到 3500 之间的整数,所以我可以使用短整数或整数。哪个效率最高?
谢谢。
【问题讨论】:
-
“巨大”是什么意思?您是否有可能获得带有整数的
OutOfMemoryException?否则使用整数,CPU 旨在高效处理 32 位值。 -
锯齿状数组中平均有 128 * 128 * 30 * 10 个数据值 (4915200)。内存使用还可以,我的机器上大约 230 MB,这是公司的平均规格。我问的原因是因为我正在对图像进行实时处理(改变色调等),所以我需要它尽可能高效。
-
如果您希望原始数据的内存占用更小,请使用 short。如果您想要更快地渲染图像,另一种数据类型可能是正确的选择,但是没有代码可以检查显示数据的使用方式。
-
感谢您的回复。在这种情况下,我不能准确的邮政编码,因为它对商业敏感,但基本上我从 Excel 中获取 128 x 128 的单元格范围,保持值在 200 - 3500 范围内,并使用一些简单的公式转换为 RGB 值来着色128 x 128 像素位图中的像素,该方法类似于 Excel 中的色阶条件格式。我更关心渲染速度而不是内存占用。
-
我想知道你怎么可能无法自己找到这个。只需尝试两种方式,使用秒表进行测量。由于实际成本是从 Excel 电子表格中获取如此多的数据,因此它不会产生任何明显的差异。
标签: vb.net performance integer short processing-efficiency