一些人刚刚开始通过阅读K&R来学习C,并在第一页上打印出了华氏到细胞的转换循环:
#include <stdio.h>
main ()
{
int fahr;
for (fahr = 0; fahr<= 200000000; fahr = fahr + 20)
printf("%d\t%6.2f\n", fahr, (5.0 / 9.0) * (fahr-32));
}
Run Code Online (Sandbox Code Playgroud)
他被告知Java很慢.所以,告诉他Java现在非常具有竞争力,但C在这个简单的情况下可能会更快.想要证明他并且基本上添加了"System.out".在printf()前面.
它慢了10倍.方式太多了.我很困惑.想到String对象创建,GC,-server,yada,yada,yada.
当我发现几乎100%的时间实际上用在printf()(PrintSteam.write()输出管道到/ dev/null)时,我感到更加困惑.
在一些摆弄之后我想出了这个(现在不做%f的四舍五入):
public static void main(String... args) throws Exception {
int fahr=0;
PrintWriter out = new PrintWriter(Channels.newWriter(Channels.newChannel(System.out), "US-ASCII") );
int max = 2000000000;
for (fahr = 0; fahr<= max; fahr = fahr + 20)
// out.printf("%d\t%6.2f\n", fahr, (5.0 / 9.0) * (fahr-32));
out.println( fahr + "\t" + f(((5.0 …Run Code Online (Sandbox Code Playgroud)