Java 我应该在断言中装箱还是取消装箱?

Java 我应该在断言中装箱还是取消装箱?,java,unboxing,Java,Unboxing,假设我有一个方法foo: public Integer foo () { return 1; } 以上哪一种选择更便宜?装箱还是拆箱 assert(1, (int) foo())); vs 以上哪一种选择更便宜?装箱还是拆箱 assert(1, (int) foo())); 当你问哪个更便宜时,你把注意力放在了错误的问题上。这是一个过早优化的示例,使用包装器类将对性能产生轻微影响。因此,如果要优化,应该使用原语int public int foo () { return 1; } 不要尝

假设我有一个方法
foo

public Integer foo () { return 1; }
以上哪一种选择更便宜?装箱还是拆箱

assert(1, (int) foo()));
vs

以上哪一种选择更便宜?装箱还是拆箱

assert(1, (int) foo()));
当你问哪个更便宜时,你把注意力放在了错误的问题上。这是一个过早优化的示例,使用包装器类将对性能产生轻微影响。因此,如果要优化,应该使用原语
int

public int foo () { return 1; }
不要尝试优化断言,它们可以(也可能应该)在生产环境中被禁用

来自
java-help的信息

java-help | grep断言
-ea[:…|:]
-启用评估[:…|:]
启用具有指定粒度的断言
-da[:…;:]
-取消分配[:…|:]
禁用具有指定粒度的断言
-esa |-启用系统断言
启用系统断言
-dsa |-禁用系统断言
禁用系统断言
以上哪一种选择更便宜?装箱还是拆箱

assert(1, (int) foo()));
当你问哪个更便宜时,你把注意力放在了错误的问题上。这是一个过早优化的示例,使用包装器类将对性能产生轻微影响。因此,如果要优化,应该使用原语
int

public int foo () { return 1; }
不要尝试优化断言,它们可以(也可能应该)在生产环境中被禁用

来自
java-help的信息

java-help | grep断言
-ea[:…|:]
-启用评估[:…|:]
启用具有指定粒度的断言
-da[:…;:]
-取消分配[:…|:]
禁用具有指定粒度的断言
-esa |-启用系统断言
启用系统断言
-dsa |-禁用系统断言
禁用系统断言

我认为原语类型变量比较比对象比较快。此外,装箱将需要更多的时间来创建包装器对象。所以您应该在断言中使用取消装箱。

我认为原语类型变量比较比对象比较快。此外,装箱将需要更多的时间来创建包装器对象。因此,您应该在断言中使用取消装箱。

这只是一个简单的示例,使问题更容易理解,还是真实的情况?这是waaaaaay过于微观的优化。选择最可读、更容易理解的方式。即使存在性能差异(因为可能没有),如果您运行该代码一千次,也会得到纳秒级的差异!为什么返回一个
整数
?这只是一个简单的例子,让问题更容易理解,还是真实的情况?这是waaaaaay过于微观的优化。选择最可读、更容易理解的方式。即使存在性能差异(因为可能没有),如果您运行该代码一千次,也会得到纳秒级的差异!为什么返回一个
整数