2012-05-08 64 views
0

我做了一些前後增量測試,以確定兩個運算符在android上是否存在性能或功耗差異。在android中執行增量運算符

我沒有發現任何差異。

基本論點在這裏有很好的解釋:http://www.roman10.net/pre-increment-and-post-increment/ (pre更快,因爲沒有生成temp-var)。

我對C++瞭解了這一點,本網站展示了c-implementation,但我無法弄清楚,如何在android中完成實現(也許它的不同)。

用於測試的代碼是

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

這是預增塊,一個爲後的工作原理類似,你可以想像。 我使用了tamp var「lTMP」來確保賦值運算符的返回值,並且編譯器不會轉換增量運算符。

所以任何人都可以幫助我,如何找到實現。 當編譯器批准時,編譯器是否仍然可以轉換運算符,即「lTMP」永遠不會被讀取? 這樣的語句在編譯時自動刪除?

回答

0

編譯器可以非常聰明,我不會感到驚訝,如果它優化變量權利。我建議你讓它成爲一個全局變量,並將其標記爲不穩定。這迫使編譯器寫入它。儘管如此,如果您擔心x ++與++ x的性能,那麼您可能會過度地對您的性能進行微觀管理。大多數性能提升都是在比此更高的水平上實現的,並且除了最極端的情況外,此更改對您的程序的影響可以忽略不計。

+0

thx這個答案。這個測試是我的碩士論文的一部分。其目標是重新獲得這種差異。我現在給基類寫了一個受保護的(現在)不穩定的成員。我得到了很大的改變,thx很多!好像我需要重新配置整個應用:) –