[英]Initializing new array as function argument, in a loop, in Java. Performance
是否為下面的代碼為每個循環運行分配了新的float數組?
for (Element e : elements) e.colorize( new float[] { 0.5f, 0.5f, 0.5f, 0.5f } );
將其更改為以下內容會提高性能嗎?
float[] color = new float[] { 0.5f, 0.5f, 0.5f, 0.5f };
for (Element e : elements) e.colorize(color);
性能上的提高主要是因為不再有任何內存分配開銷,並且可以節省大量空間。 但是更重要的是,在第二個代碼示例中,您要對同一數組進行着色,而在第一個代碼示例中,您每次都在對不同的數組進行着色。 如果這是您想要的,那就太好了! 如果沒有,那么您需要重新考慮您的代碼。
是的,你是對的。 第二個將更有效,因為該數組僅創建和初始化一次。
請注意,盡管您所有的colorize調用都將共享float[]
數組,所以更改一個內容將對其全部更改。 在這種情況下,這不太可能成為問題,但需要注意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.