Pau*_*des 13 language-agnostic math performance
我在这里看到了关于John Carmack计算平方根的神奇方法的这个主题,它引用了这篇文章:http://www.codemaestro.com/reviews/9.这让我很吃惊,我只是没有意识到计算sqrt会如此之快.
我只是想知道电脑游戏用来运行得更快的其他"魔法"的例子.
更新:John Carmack不是魔法代码的作者.这篇文章讲述了更多.谢谢@moocha.
这不是一个数学黑客,但我喜欢这个关于Java6中的罗马数字:
public class Example {
public static void main(String[] args) {
System.out.println(
MCMLXXVII + XXIV
);
}
}
Run Code Online (Sandbox Code Playgroud)
由于重写规则,它将给你预期的结果(1977 + 24 = 2001):,
class Transform extends TreeTranslator
Java编译器的内部类.
Transform
访问源代码中的所有语句,并将名称与罗马数字匹配的每个变量替换为具有相同数值的int文字.
public class Transform extends TreeTranslator {
@Override
public void visitIdent(JCIdent tree) {
String name = tree.getName().toString();
if (isRoman(name)) {
result = make.Literal(numberize(name));
result.pos = tree.pos;
} else {
super.visitIdent(tree);
}
}
}
Run Code Online (Sandbox Code Playgroud)