在 Java 中循环初始化新数组作为函数参数。表现

Initializing new array as function argument, in a loop, in Java. Performance

是否为以下代码的每个循环运行分配了一个新的浮点数组?

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);

性能会有所提升,主要是因为不再有任何内存分配开销,并且您可以节省大量 space。但更重要的部分是,您在第二个代码示例中为 same 数组着色,而在第一个代码示例中,您每次都为不同的数组着色。如果这是你想要的,太好了!如果不是,那么您需要重新考虑您的代码。

是的,你是对的。第二个会更有效率,因为数组只会被创建和初始化一次。

请注意,您所有的着色调用都将共享 float[] 数组,因此更改其中一个的内容将会更改所有这些调用。在这种情况下,这不太可能成为问题,但需要注意。