Objectively comparing the performance of a Java program and another equivalent one written in another programming language such as C, C++ or Object Pascal is a tricky and controversial task. The target platform of Java's bytecode compiler is the Java platform, and the bytecode is either interpreted or compiled into machine code by the JVM. Very different and hard-to-compare scenarios raise from these two different approaches: static vs.
| Property | Value |
| dbpprop:abstract
|
- Objectively comparing the performance of a Java program and another equivalent one written in another programming language such as C, C++ or Object Pascal is a tricky and controversial task. The target platform of Java's bytecode compiler is the Java platform, and the bytecode is either interpreted or compiled into machine code by the JVM. Very different and hard-to-compare scenarios raise from these two different approaches: static vs. dynamic compilations and recompilations, the availability of precise information about the runtime environment and others. The performance of the compiled Java program will depend on how smartly its particular tasks are going to be managed by the host JVM, and how well for doing it the JVM could take advantage of the features of the hardware and OS. Thus, any Java performance test or comparison has always to report the version, vendor, OS and hardware architecture of the used JVM. In a similar manner, the performance of the equivalent natively-compiled program will depend on the quality of its generated machine code, so the test or comparison also has to report the name, version and vendor of the used compiler, and its activated optimization directives. Programs written in Java have had a reputation for being slower and requiring more memory than those written in natively compiled languages such as C or C++.
- Java とCやC++、Object Pascalといったネイティブコードへのコンパイル言語との性能を客観的に比較することは難しく、論争を巻き起こすテーマである。Java は C++ と似たプログラミング言語であるが、コンパイラが対象とするプラットフォーム はJavaプラットフォームであり、Java仮想マシン上に実装されている。一方 C/C++、Object Pascal のプログラムは特定のハードウェアとOS向けにコンパイルされる。大きく異なるアプローチである静的コンパイルと動的コンパイル/再コンパイルの比較、すなわち実行環境に対する正確な情報が利用できるかどうかが異なるもの比較であるため、比較が困難なシナリオが生じる。 コンパイルされたJavaコードの性能は、プラットフォームの JVM が特定のタスクをどの程度賢く実行するか、また JVM がどの程度ハードウェアやOSの機能を使いこなせるかに依存する。ゆえに Java の性能テストやその比較結果には、使用された JVM のバージョン、開発元、OS、ハードウェアアーキテクチャが明示されていなければならない。同様に、等価なコンパイラ言語のプログラムも、生成された機械語コードの品質に依存する。したがって、性能テストやその比較結果には、コンパイラの名前、バージョン、開発元や、利用された最適化オプションが明示されなければならない。 Java で記述されたプログラムは、C、C++といったコンパイラ言語のプログラムと比較して、低速で大量のメモリを消費すると言われてきた。 しかし、Java プログラムの実行速度はJITコンパイルの導入や 、 コードの解析の機能が言語に追加されたこと、Java仮想マシン自体の最適化(2000年から Sun の VM で標準的に動作するようになったHotSpot技術など)によって大きく向上してきている。
|
| dbpprop:hasPhotoCollection
| |
| dbpprop:javadocSeProperty
| |
| dbpprop:reference
| |
| dbpprop:relatedInstance
| |
| dbpprop:wikiPageUsesTemplate
| |
| rdf:type
| |
| rdfs:comment
|
- Objectively comparing the performance of a Java program and another equivalent one written in another programming language such as C, C++ or Object Pascal is a tricky and controversial task. The target platform of Java's bytecode compiler is the Java platform, and the bytecode is either interpreted or compiled into machine code by the JVM. Very different and hard-to-compare scenarios raise from these two different approaches: static vs.
|
| rdfs:label
| |
| owl:sameAs
| |
| skos:subject
| |
| foaf:page
| |
| is owl:sameAs
of | |