Java比C更快
这个问题在这里已经有了答案:
使用除-O0
之外的任何优化级别(例如-O2
)重建您的C版本,并且您会发现它在0秒内运行。 所以Java版本需要1.6秒才能做任何事情,而C版本则需要0.0秒(实际上约为0.00005秒)才能不做任何事情。
Java在消除无所作为的代码方面更积极。 开发人员不太可能知道他们在做什么。 你没有计算循环,但需要多长时间才能检测并消除循环。
简而言之,Java通常无需任何有用的操作。
你也可能会发现,如果你优化C代码并删除调试信息,它会做同样的事情,很可能更短。
如果你想以此为基准,而不是无所作为,可以尝试一些有用的东西,比如每次迭代计算一些东西。 例如,对其他变量中的循环进行计数,并确保在最后使用它(例如通过打印它),以便它不会被优化。
交替的简单测试可以线性访问数组(只读),将数组中的元素复制到另一个(读取+写入)或对数据执行一些操作。 其中一些情况可能很有趣,因为它们会打开几个非常简单的编译器优化,您可以稍后在结果二进制/字节码中看到这些优化,例如循环展开,寄存器分配以及更复杂的向量化或代码运动等。 另一方面,Java可能会使用一些难以理解的技巧,如jitting(动态重新编译)
编译器优化的范围是巨大的,你刚刚遇到了最基本的 - 消除无用的代码:)
链接地址: http://www.djcxy.com/p/86539.html上一篇: Java faster than C