- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我要用 javac 编译以下代码,编译器是否足够聪明,只对 codeInput.length() 求值一次,或者我是否可以通过将受迭代器变量影响的求值放在首位来获得更快的程序?
// edit: The first character must be an upper case letter, the next four must be
// edit: numeric and there must be exactly five characters in total in a product
// edit: code.
for (int i = 1; i < 5; i++)
if (codeInput.length() != 5 || codeInput.charAt(i) < '0'
|| codeInput.charAt(i) > '9' || codeInput.charAt(0) < 'A'
|| codeInput.charAt(0) > 'Z')
{if (verbose) System.out.println("Sorry, I don't understand!
Use product codes only."); return true;}
最佳答案
通常;您应该尽可能编写最简单明了的代码,这样性能会很好。通常,使代码更清晰的性能问题更为重要。在你的例子中,我会这样写。
static final Pattern CODE = Pattern.compile("[A-Z][0-9]{4}");
if (!CODE.matcher(codeInput).matches()) {
if (verbose)
System.out.println("Sorry, I don't understand! Use product codes only.");
return true;
}
即使这样稍微慢一点,也更清晰,更容易维护恕我直言
javac
几乎没有做任何优化,它们几乎全部由 JIT 在运行时执行。
If I were to compile the following code with javac, would the compiler be clever enough to only evaluate codeInput.length() once,
没有,但是,
or would I potentially get a faster program by putting the evaluations affected by the iterator variable first?
这不像您会注意到差异,因为如果代码运行时间足够长,JIT 就会启动,并且方法将被内联,从而消除对局部变量的需要。
关于java - javac 有多聪明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119515/
Closed. This question is opinion-based。它当前不接受答案。
我知道如何创建和编写我自己的安装程序,但我需要在某些时候被重定向。这一点我肯定也会启发其他人。 我创建了一个安装项目。一切都完成了。 EXE 中的安装文件除外。 我知道有两种不同的方法: 在 EXE
重复 What is a PHP Framework?and many more 到目前为止,我一直在使用 PHP 进行小的调整,主要是使用 WordPress。什么是 PHP 框架?为什么我需要它们
我刚刚发现 String#split 有以下奇怪的行为: "a\tb c\nd".split => ["a", "b", "c", "d"] "a\tb c\nd".split(' ') => ["a
我是一名优秀的程序员,十分优秀!