c– 选择整数类型大小有哪些好的指导原则?

c– 选择整数类型大小有哪些好的指导原则?,第1张

概述我一直在寻找,我还没有真正想出答案.当我在内存有限的嵌入式设备上编程时,我通常习惯使用最小的积分/浮点类型来完成这项工作,例如,如果我知道计数器总是在0到255之间,我将它声明为uint8_t.但是,在内存受限较少的环境中,我习惯只使用int来处理所有内容,按照Google C++ Styleguide.当我查看现有代码时,通常会以这种方式完成.要明确的是,

我一直在寻找,我还没有真正想出答案.

当我在内存有限的嵌入式设备上编程时,我通常习惯使用最小的积分/浮点类型来完成这项工作,例如,如果我知道计数器总是在0到255之间,我将它声明为uint8_t.

但是,在内存受限较少的环境中,我习惯只使用int来处理所有内容,按照Google C++ Styleguide.当我查看现有代码时,通常会以这种方式完成.

要明确的是,我得到了这样做的理由,(Google非常好地解释了这一点),但我并不清楚第一种方式背后的理由.

在我看来,即使在不关心内存使用的系统上,减少程序的内存占用也会对整体速度有利,因为从逻辑上讲,较少的整体数据意味着它可以更多地适应cpu缓存.

然而,使问题复杂化的是编译器将自动填充数据并将其与边界对齐,以便可以在单个总线周期中获取数据.我想,那么,它归结为编译器是否足够聪明,比如两个32位整数,并将它们组合在一个64位块中,而不是单独填充每一个到64位.

我想cpu本身是否可以利用它还取决于其确切的内部结构,但优化内存大小提高性能的想法,特别是在较新的处理器上,可以从gcc的-0s选项上的linux内核relied for awhile这一事实得到证明.为了整体性能提升.

所以我想我的问题是为什么Google方法在实际代码中似乎更为普遍.这里有隐藏的成本,我错过了吗?

最佳答案通常使用“谷歌方法”的常见原因是因为int通常足够好,并且它通常是初学者材料中教授的第一个选项.为“有限的记忆”优化非平凡的代码也需要更多的努力(工时等) – 如果不是实际需要则没有意义.

如果为了可移植性而编写“实际代码”,那么int是一个很好的默认选择.

无论是否为可移植性而编写,许多程序只能在具有足够内存资源的主机上运行,​​并且int类型可以表示所需的值范围.这意味着没有必要担心内存使用(例如,根据需要支持的特定值范围优化变量的大小),程序才能正常工作.

“有限内存”的编程当然很常见,但通常不是为什么编写大多数代码的原因.相当多的现代嵌入式系统具有足够的内存和其他资源,因此并不总是需要这些技术.

为你所谓的“有限内存”编写的许多代码实际上并不需要.有一点,程序员了解更多,大量开始沉迷于过早优化 – 担心性能或内存使用,即使没有证明他们需要这样做.虽然由于真正的需要,肯定会为“有限的内存”编写大量代码,但由于过早的优化,会编写更多这样的代码.

总结

以上是内存溢出为你收集整理的c – 选择整数类型大小有哪些好的指导原则?全部内容,希望文章能够帮你解决c – 选择整数类型大小有哪些好的指导原则?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1258709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存