Java、JIT和垃圾收集器效率
我想知道Java的效率以及Java虚拟机和Android的优缺点。 效率是低内存利用率、低处理器利用率和快速执行 移动设备比PC更简单,那么应用程序需要更高效。服务器接收许多连接,它们需要非常高效。许多移动设备使用Android和Java应用程序,许多服务器使用PHPJava、JIT和垃圾收集器效率,java,garbage-collection,performance,jit,Java,Garbage Collection,Performance,Jit,我想知道Java的效率以及Java虚拟机和Android的优缺点。 效率是低内存利用率、低处理器利用率和快速执行 移动设备比PC更简单,那么应用程序需要更高效。服务器接收许多连接,它们需要非常高效。许多移动设备使用Android和Java应用程序,许多服务器使用PHP java和解释语言,如java脚本、python和php,比C++和C++ ++更有效吗? 准时制(JIT)优势: 它可以更好地优化,因为它知道一些变量的值以及在哪里使用或更改 它了解处理器,可以使用特定于处理器的指令进行优化
java和解释语言,如java脚本、python和php,比C++和C++ ++更有效吗? 准时制(JIT)优势:
- 它可以更好地优化,因为它知道一些变量的值以及在哪里使用或更改
- 它了解处理器,可以使用特定于处理器的指令进行优化
- 将函数转换为内联函数更容易
- 它可以删除已知的条件测试并删除不会运行的块
- 当应用程序第一次运行时,应用程序将非常慢,因为字节码将被解释,JIT编译器将进行许多分析以找到良好的优化。应用程序无法使用最大的硬件电源。如果应用程序是游戏或实时应用程序,如果它第一次成功运行且没有延迟,但使用了最大硬件功率,那么下次运行应用程序时,由于优化,它将不会使用最大硬件功率。问题是,应用程序无法设计为在优化后使用最大硬件功率,因为它在第一次运行时速度太慢,无法继续运行
- Java检查数组索引是否超出范围,并检查指针是否为空。它将向生成的代码添加几个内部“如果”
- 所有对象都使用垃圾收集器,包括非常容易手动删除的对象
- 对象的所有实例都是通过动态内存分配创建的,包括可以轻松使用堆栈的对象。如果循环迭代开始创建类的实例并结束删除创建的对象,则动态内存分配将效率低下
- 垃圾收集器需要在清理内存时停止应用程序,这对于游戏、GUI应用程序和实时应用程序来说是非常不受欢迎的。引用计数很慢,无法处理循环引用。多线程垃圾收集器速度较慢,需要更多地使用CPU
java和解释语言,如java脚本、python和php,比C++和C++ ++更有效吗? 要比最好的C和C++程序更高效。有很多C和C++程序远没有那么有效,如果你有什么好的,用(现代)java代码打败它们是很实用的。 我也听说过关于当前最好的Javascript引擎的好消息,但我从未详细研究过它们
Python和PHP(以及其他许多语言)有点不同。这些语言都是用C语言编写的,所以很明显,它们的效率不可能比C语言更高(后面是构造)。然而,用它们编写高效的代码(即,使用实际上编写得非常好的C库)要比从头开始容易得多。特别是,它减少了每个程序的缺陷数量。这在实践中是一个非常重要的指标;如果允许错误,任何人都可以生成快速代码一般来说,我建议不要担心获得最大的效率。你违反了收益递减定律。相反,使用合理的整体算法(或者,正如我的一位朋友曾经对我说的那样,“照顾好大O()并让常量因素自己照顾自己”),并关注程序在实践中是否足够好的问题。一旦它是,停止摆弄和船舶 在任何语言中,获得快速执行的方法都是以尽可能少的执行和尽可能少的垃圾收集来完成任务 这听起来像是一个空洞的概括性,但在实践中,无论使用何种语言,它的含义都是