Java Drools中基本数据类型与非基本数据类型的性能
我想知道与Drools中的非基本数据类型相比,使用基本数据类型对性能和内存使用有什么影响 在《公约》中规定: 8.8.6。关于自动装箱和基元类型的一个注释Drools试图在基元或对象包装形式中保留数字,因此 在代码块中使用时绑定到int原语的变量或 表达式将不再需要手动取消装箱;与Drools 3.0不同 所有原语都是自动装箱的,需要手动拆箱。A. 绑定到对象包装器的变量将保留为对象;这个 处理自动装箱和取消装箱的现有JDK1.5和JDK5规则 适用于这种情况。评估字段约束时,系统将 试图将其中一个值强制转换为可比较的格式;那么 原语类似于对象包装器 基本上,在我的规则中,我有如下条件:Java Drools中基本数据类型与非基本数据类型的性能,java,drools,Java,Drools,我想知道与Drools中的非基本数据类型相比,使用基本数据类型对性能和内存使用有什么影响 在《公约》中规定: 8.8.6。关于自动装箱和基元类型的一个注释Drools试图在基元或对象包装形式中保留数字,因此 在代码块中使用时绑定到int原语的变量或 表达式将不再需要手动取消装箱;与Drools 3.0不同 所有原语都是自动装箱的,需要手动拆箱。A. 绑定到对象包装器的变量将保留为对象;这个 处理自动装箱和取消装箱的现有JDK1.5和JDK5规则 适用于这种情况。评估字段约束时,系统将 试图将其中
$someObj : SomeObj( someIntOrIntegerField > 15 )
和累积如下:
$total : Double() from accumulate (
SomeObj(
$someIntOrIntegerField : someIntOrIntegerField) over window:time( 1h ),
sum( $someIntOrIntegerField ) )
我的理解是Drools将强制委托给JVM,而不执行任何装箱/取消装箱操作。这是真的吗?当我在几毫秒内与时间赛跑时,我想知道哪个会更快:
int someIntOrIntegerField;
或
请注意,我的问题是关于Drools中是否存在我不知道的装箱/拆箱,以及原语或
对象
s是否会更快、更高效(在内存方面),同样,仅限于Drools。否则,在一般Java范围内有一个很好的答案:您的问题中可以回答的一部分是:
我的理解是Drools将强制委托给JVM,而不执行任何装箱/取消装箱操作。这是真的吗
不,这不是真的。JVM不执行自动装箱/取消装箱转换。(源->字节码)编译器负责将对(例如)Integer.valueOf(int)
和Integer.intValue()
的调用插入字节码中的适当点。您可以通过使用javap
检查“.class”文件来验证这一点
对于Drools,编译器生成的“.class”文件在字节码中具有任何必要的自动装箱/取消装箱。我认为您引用的文档实际上意味着Drools编译器的自动装箱/取消装箱策略已经改变。。。因为Drools 3.0测量。基本类型很少较慢。包装器类型只有在不做任何操作的情况下才能更快,但将其推送和原语类型将需要包装。JVM是否会执行JIT编译以修改装箱/取消装箱行为?它不会修改该行为。它可能会做一些优化。。。但这是不同的。
Integer someIntOrIntegerField;