der*_*itz 4 java performance preconditions guava
在我们的代码中,我们经常检查参数Preconditions:
Preconditions.checkArgument(expression, "1" + var + "3");
Run Code Online (Sandbox Code Playgroud)
但有时,这个代码经常被调用.这会对性能产生显着的负面影响吗?我们应该切换到
Preconditions.checkArgument(expression, "%s%s%s", 1, var, 3);
Run Code Online (Sandbox Code Playgroud)
?
(我希望大多数情况下条件都是正确的.假意味着错误.)
如果您希望检查在大多数情况下不抛出任何异常,则没有理由使用字符串连接.在您确定要抛出异常之后,在调用方法之前,您将失去更多连接(使用.concat或a StringBuilder)的时间.
相反,如果你抛出异常,你已经在慢速分支中了.
值得一提的是,Guava使用了一种只接受的自定义和更快的格式化程序%s.因此,时间损失实际上更类似于标准记录器{}句柄(在slf4j或log4j 2中).但如上所述,这是你已经在慢速分支的情况.
在任何情况下,我强烈建议您反对任何建议,但我会使用这个建议:
Preconditions.checkArgument(expression, "1%s3", var);
Run Code Online (Sandbox Code Playgroud)
你应该只放入变量%s,而不是常数来获得边际速度.
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |