【发布时间】:2010-05-01 17:00:25
【问题描述】:
在过去的几个月里,我一直在学习为 Mac 编程(我有其他语言的经验)。显然,这意味着学习 Objective C 语言,从而学习更简单的 C 语言。所以我偶然发现了这句话,它指的是一般的 C/C++ 语言,而不仅仅是 Mac 平台。
对于 C 和 C++,更喜欢使用 int 字符和短。背后的主要原因 这是 C 和 C++ 执行的 算术运算和参数 在整数级别传递,如果你有 一个可以放入 a 的整数值 字节,您仍然应该考虑使用 一个 int 来保存数字。如果你使用 一个字符,编译器将首先 将值转换为整数, 执行操作,然后 将结果转换回字符。
所以我的问题是,在 Mac 桌面和 iPhone OS 环境中是这种情况吗?我知道在谈论这些环境时,我们实际上是在谈论 3-4 种不同的架构(PPC、i386、Arm 和 A4 Arm 变体),因此可能没有一个答案。
尽管如此,一般原则仍然认为,在现代 32 位/64 位系统中,使用与机器的自然 4 字节字不一致的 1-2 字节变量并不能提供我们预期的很多效率。
例如,100,000 个字符的普通旧 C 数组比相同的 100,000 个整数小四倍,但如果在枚举期间,读取每个索引涉及各种类型的强制转换/装箱/拆箱,我们会尽管节省了内存开销,但看到整体“性能”较低?
【问题讨论】:
标签: performance macos compiler-construction integer alignment