Java Drools中基本数据类型与非基本数据类型的性能

Java Drools中基本数据类型与非基本数据类型的性能,java,drools,Java,Drools,我想知道与Drools中的非基本数据类型相比,使用基本数据类型对性能和内存使用有什么影响 在《公约》中规定: 8.8.6。关于自动装箱和基元类型的一个注释Drools试图在基元或对象包装形式中保留数字,因此 在代码块中使用时绑定到int原语的变量或 表达式将不再需要手动取消装箱;与Drools 3.0不同 所有原语都是自动装箱的,需要手动拆箱。A. 绑定到对象包装器的变量将保留为对象;这个 处理自动装箱和取消装箱的现有JDK1.5和JDK5规则 适用于这种情况。评估字段约束时,系统将 试图将其中

我想知道与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;