在我的项目中,有一些“Prototype”工厂通过克隆最终的私有实例来创建实例.
这些工厂的作者表示,这种模式提供比调用“新”运算符更好的性能.
使用谷歌获得一些线索,我没有发现任何相关的.
这是javdoc from an unknown project发现的一个小节选
Sadly,clone() is rather slower than
calling new. However it is a lot
faster than calling
java.lang.Class.newInstance(),and
somewhat faster than rolling our own
“cloner” method.
对我来说,它看起来像是java 1.1时代的最佳实践.
有人更了解这个吗?这是使用“现代”jvm的好习惯吗?
解决方法
当然,这种做法是完全过时的.自此,Java虚拟机大幅改善.对象创建非常便宜.另一个相关的实践,对象池化也是过时的,因为对象创建和清理的成本现在要高得多.在某些情况下,这可能是有用的(
Jon Skeet gives some good examples here),但绝对不应该是这样的基础框架库的一部分.
我建议找一些新的图书馆和/或一个新的项目来工作;-)
查看这个类文章Java Urban Performance Legends了解更多的见解.