数据类型和内存效率的神话

问题描述 投票:0回答:1

最近,我一直在思考使用“just-fit”数据类型是否真的有益。

例如,如果我的数据只能达到最大值 255,我可以使用

byte
(或
int8
,与语言无关)。然而,我相信我们大多数人都会简单地使用
int
(通常是
int32
),而不考虑花额外的时间优化数据类型。

这让我想知道:为什么我们有所有这些不同的数字数据类型?就内存效率而言,使用更小、更精确的数据类型是否有切实的好处?

我希望了解这种做法是否值得,特别是在不同的编程环境中。我是一名全栈开发人员(大部分时间是 JS 和 Go),对嵌入式系统和游戏开发不太了解,请随时分享您的方法。

我尝试测量各种数据类型的内存使用情况,但我没有观察到以下语言有任何显着的改进(以及对 CPU 使用率的影响):

  • C#
  • Java
  • 走吧
  • 哈斯克尔

P.S.:我知道使用 CLR 的语言(C#、JVM)与编译语言(如 C、Go 等)不同。请随时分享您对这两种类型的系统的任何见解。

optimization memory memory-management
1个回答
0
投票

有很多因素可能会影响性能。

I) 某些编程语言指定整数运算作为全整数进行。所以

字节1 + 字节2

成为

将 BYTE1 转换为 4BYTE1 将 BYTE2 转换为 4BYTE1 4字节1 + 4字节2 = 4字节3 将 4BYTE3 转换为 BYTE1

在这种情况下,你的效率会降低。

II) 与 4 或 8 字节算术相比,执行 1 字节算术是否能提高性能,处理器各不相同。

III) 某些处理器(比如“嗨”英特尔)对缓存非常敏感。使用小整数可以让您的数据适合处理器缓存,这样您就可以获得性能提升,即使您必须将字节转换为单词才能进行算术。

© www.soinside.com 2019 - 2024. All rights reserved.