JIT编译与系统优化

java与c之争是比较老的话题了。

c的支持者坚信使用c语言接近机器语言的底层特性能让c能够最大程度地发挥计算机的性能。在同样算法的条件下要要优于java。

但在某些情况下,java却能发挥出更大的性能优势。所有人把这归功于JIT的原因。

我对编译是不怎么懂了,不过这个论点的逻辑是JIT的某些优化是AOT所不能达到的。因为JIT会根据代码的运行时信息来进行优化编译,而AOT不能。

但是换种思路来想,JIT编译器的背后并没有另外一个JIT环境来为这个JIT做优化,归根结底,JIT编译器的代码是静态的。因此,我完全可以把这部分代码的功能搬到高层,在aot的基础上自己来实现这部分功能。实际上,根据统计信息来进行自我优化的程序并不少见。

可工程的思路从来都是把困难的问题封装到底层,把简单的应用逻辑留给程序员。即使你把程序写得再烂,只要语义没问题,底层都会帮你把事情做好。这也符合现代工业文明分工细化的逻辑。

但是,科技的进步真能带给人幸福么?

你可能感兴趣的:(JIT编译)