0

我对前后增量进行了一些测试,以确定 android 上的两个运算符之间是否存在性能或功耗差异。

我没有发现任何差异。

基本论文在这里得到了很好的解释:http ://www.roman10.net/pre-increment-and-post-increment/ (pre更快,因为没有生成temp-var)。

我为 c++ 学习了这一点,这个网站显示了 c 实现,但我无法弄清楚如何在 android 中完成实现(可能不同)。

用于测试的代码是

int lPlotRangeCtr = 0;
    while (lPlotRangeCtr != mPlotRange){
        int lTMP = ++lPlotRangeCtr;
    }   

正如你可以想象的那样,这是用于预增量的块,用于后期类似的块。我使用 tamp var "lTMP" 来确保分配了运算符的返回值,并且编译器不会转换增量运算符。

所以任何人都可以帮助我,如何找到实现。编译器仍然可以转换运算符,当它被批准时,“lTMP”永远不会被读取?编译时是否会自动删除此类语句?

4

1 回答 1

0

编译器可以非常聪明,如果它直接优化了变量,我不会感到惊讶。我建议您将其设为全局变量并将其标记为 volatile。这会强制编译器对其进行写入。

说了这么多,如果您担心 x++ 与 ++x 的性能,那么您可能对性能进行了过多的微观管理。大多数性能提升都是在比这更高的水平上实现的,除了最极端的情况外,这种变化对您的程序产生的影响在所有情况下都可以忽略不计。

于 2012-05-08T09:54:48.023 回答