最近,我一直在思考使用“just-fit”数据类型是否真的有益。
例如,如果我的数据只能达到最大值 255,我可以使用
byte
(或 int8
,与语言无关)。然而,我相信我们大多数人都会简单地使用 int
(通常是 int32
),而不考虑花额外的时间优化数据类型。
这让我想知道:为什么我们有所有这些不同的数字数据类型?就内存效率而言,使用更小、更精确的数据类型是否有切实的好处?
我希望了解这种做法是否值得,特别是在不同的编程环境中。我是一名全栈开发人员(大部分时间是 JS 和 Go),对嵌入式系统和游戏开发不太了解,请随时分享您的方法。
我尝试测量各种数据类型的内存使用情况,但我没有观察到以下语言有任何显着的改进(以及对 CPU 使用率的影响):
P.S.:我知道使用 CLR 的语言(C#、JVM)与编译语言(如 C、Go 等)不同。请随时分享您对这两种类型的系统的任何见解。
有很多因素可能会影响性能。
I) 某些编程语言指定整数运算作为全整数进行。所以
字节1 + 字节2
成为
将 BYTE1 转换为 4BYTE1 将 BYTE2 转换为 4BYTE1 4字节1 + 4字节2 = 4字节3 将 4BYTE3 转换为 BYTE1
在这种情况下,你的效率会降低。
II) 与 4 或 8 字节算术相比,执行 1 字节算术是否能提高性能,处理器各不相同。
III) 某些处理器(比如“嗨”英特尔)对缓存非常敏感。使用小整数可以让您的数据适合处理器缓存,这样您就可以获得性能提升,即使您必须将字节转换为单词才能进行算术。