【发布时间】:2015-08-03 07:33:45
【问题描述】:
在编码时,我尽量不使用比需要更多的可变内存,这导致我编写如下代码:
for (uint8 i = 0; i < 32; i++) {
...
}
代替:
for (int i = 0; i < 32; i++) {
...
}
(uint8 而不是int 因为i 只需要上升到32)
在 8 位微处理器上编码时,这很有意义。但是,如果在 32 位微处理器(int 可能是 16 位或 32 位)上运行此代码,我是否会节省任何资源?当我在 32 位架构上明确使用 8 位 int 时,像 GCC 这样的编译器会在下面做任何魔术/juju 吗?
【问题讨论】:
-
致敬!您是否尝试过查看在不同架构上生成的程序集?也许这可以提供一些见解?
-
如果您是从微优化的角度提出这个问题,您可以使用
intfast8_t之类的东西。 -
这是
zoozoo,不是juju... :-) -
如果您想确定,您应该查看程序集,但很可能您没有节省任何资源(除非您有一个数组)或获得任何性能提升。跨度>
-
作为一个经验法则,不要过早优化,如果你想优化,一定要有理由。
标签: c gcc memory types compiler-optimization