簡體   English   中英

什么更貴? 轉讓還是聲明?

[英]What is more expensive? Assignment or declaration?

只是一個簡單的問題,在Java中什么會更昂貴?

   double test = 5;
   double test1 = 5;

要么

   double test = 5;
   double test1 = test;

都不行 Java有一個非常好的優化器,它將在此示例中生成完全相同的代碼。

編譯器查看賦值double test1 = test; 並可以得出結論,此時test是一個等於5的常數,可以完全優化分配。

這也是為什么您不必害怕擴展數值的原因。

int timeout = 60 * 60 * 2   // 2 hours in seconds

完全不說,這是微優化的一種情況,它永遠不會返回任何值得注意的東西。 擔心網絡連接會延遲幾秒鍾。

兩者之間的差異應忽略不計。 我想常量會稍微快一點,因為沒有加載測試的值,但是實際上...值得您花時間去擔心它。 可讀性比您可能節省的一兩個周期重要得多。

我的第一個沖動就是說,編寫一個小的循環程序並對其進行測試。 但是,可能比這更復雜。

編寫代碼后,Java可以完成各種優化工作,而這正是他們關注的工作。 因此,這使回答變得更加困難,並且可能取決於特定的JRE和代碼。

雖然我知道這是一個有趣的學術問題,但實際上,答案可能是“無關緊要”,而您代碼的其他部分通常會更多地成為瓶頸。

對於您的特定示例,我覺得“ 5”可能是一種特殊情況,其中有一個靜態整數系統池,我知道它們使用字符串來實現。 有人知道嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM