Dig*_*Man 3 java performance reference
说我有以下代码:
Frame process(Frame input) {
if (rareEvent) {
input = new Frame();
}
input.bytes[0] = 255;
return input;
}
//Elsewhere...
Frame example = new Frame();
example.bytes[0] = 127;
example = process(example);
Run Code Online (Sandbox Code Playgroud)
显然,在极少数情况下input重新创建Frame对象时,它将不是完全相同的对象.但是,最终目标是,在正常情况下(rareEvent寄存器为false),Frame的bytes属性永远不会被完全复制.这是因为,在实际场景中,在非常时间敏感的操作中,它将是数百万字节长.
在这种特殊情况下,我并不太关心对象的其余部分是否真正相同,只是它的属性.但是,为了完成,我也可以查询两个:如果返回作为参数传递的对象,它是否完全相同(==)对象?在我的特定情况下,对象的属性是否会避免任何昂贵的复制?