【发布时间】:2013-02-05 09:22:36
【问题描述】:
编辑 2:
具有完全object-oriented 实现的程序是否提供高性能?大多数framework 都是用它的全部力量编写的。然而,reflection 也被大量用于实现它,例如AOP 和dependency injection。使用reflection会在一定程度上影响性能。
那么,使用reflection 是一种好习惯吗?是否有一些替代编程语言结构的反射的方法? reflection应该使用到什么程度?
【问题讨论】:
-
首先,几乎每个程序员都会编写 Java(或在 JVM 上运行的另一种语言)来编译为字节码。我们也不要忘记,真正的性能来自 Hotspot,它使用动态分析来识别代码,以便进行大量优化的即时编译。
-
还有一件事——当动态绑定总是(或几乎总是)针对特定的类或方法时,Hotspot 会发现,并对其进行优化,使其与动态绑定一样快(如果 Hotspot 内联被调用的方法,则更快) .所以不要太在意绑定类型。
-
至于实现性能:1) 从不及早优化 2) 在您认为需要性能时进行配置 3) 优化您的分析数据显示的速度很慢。性能通常与您选择的算法或数据结构有关,或者与开发人员使用错误的习惯用法(例如 Java 中的字符串 + 字符串 + 字符串)或不使用/误用线程有关。
-
我认为这不是一个真正可以回答的问题。它包含许多模糊的问题,我会投票支持将其关闭为“不是一个真正的问题”。不幸的是我不能因为赏金......所以请尝试重写你的问题,只包含一个可回答的问题。
-
-1 因为这个问题到处都是。
标签: java reflection coding-style bytecode