Skip to Content
Javaパフォーマンス第2版
book

Javaパフォーマンス第2版

by Scott Oaks
March 2025
Intermediate to advanced
450 pages
7h 10m
Japanese
O'Reilly Media, Inc.
Content preview from Javaパフォーマンス第2版

第4章 JITコンパイラー JITコンパイラーを使う

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

ジャスト・イン・タイム(JIT)コンパイラーはJava仮想マシンの心臓部であり、JITコンパイラーほどアプリケーションのパフォーマンスを左右するものはない。

この章では、コンパイラについて詳しく説明する。コンパイラがどのように動作するかという情報から始まり、JITコンパイラを使う利点と欠点について議論する。 JDK 8が登場するまでは、2つのJavaコンパイラのどちらかを選ばなければならなかった。今日、この2つのコンパイラはまだ存在しているが、互いに協調して動作している。 最後に、コンパイラの中級および上級チューニングについて見ていく。明らかな理由もなくアプリケーションの動作が遅い場合、これらのセクションはコンパイラに問題があるかどうかを判断するのに役立つだろう。

ジャストインタイム・コンパイラ:概要

ジャストインタイム・コンパイルの基本を理解していれば、読み飛ばしても構わない。

コンピューター、より具体的にはCPUは、マシンコードと呼ばれる比較的少数の特定の命令しか実行できない。したがって、CPUが実行するすべてのプログラミングは、これらの命令に翻訳されなければならない。

C++やFortranのような言語がコンパイル言語と呼ばれるのは、そのプログラミング言語がバイナリ(コンパイル)コードとして呼び出されるからである。そのバイナリに含まれるアセンブリコードは、特定のCPUをターゲットにしている。 相補的なCPUは、同じバイナリを実行することができる。たとえば、AMDとインテルのCPUは、基本的な共通のアセンブリ言語命令セットを共有しており、それ以降のバージョンのCPUは、ほとんどの場合、そのCPUの以前のバージョンと同じ命令セットを実行することができる。逆に、旧バージョンのCPUでは実行できない命令が、新バージョンのCPUに導入されることもある。

一方、PHPやPerlのような言語はインタプリタである。 正しいインタプリタ(つまり、php またはperl と呼ばれるプログラム)を持つマシンであれば、同じプログラムのソースコードをどのCPUでも実行することができる。 インタプリタは、プログラムの各行をバイナリコードに変換しながら実行する。

それぞれのシステムには利点と欠点がある。 インタプリタ言語で書かれたプログラミングは移植性が高い。同じコードを、適切なインタプリタがあるマシンにドロップすれば実行できる。しかし、動作は遅いかもしれない。単純な例として、ループの中で何が起こるかを考えてみよう。ループの中でコードが実行されると、インタプリタはそれぞれの行を再翻訳する。コンパイルされたコードは、その翻訳を繰り返す必要はない。

優れたコンパイラーは、バイナリをプロデューサするときにいくつかの要素を考慮する。単純な例としては、バイナリ文の順番がある。すべてのアセンブリ言語命令が同じ時間をかけて実行されるわけではない。つのレジスタに格納された値を加算する文は1サイクルで実行されるかもしれないが、加算に必要な値を(メインメモリから)取り出すには複数サイクルかかるかもしれない。

したがって、優れたコンパイラは、データをロードする文を実行し、他の命令を実行し、データが利用可能になったら加算を実行するバイナリをプロデューサが作成する。一度に1行のコードしか見ていないインタプリタは、そのようなコードを生成するのに十分な情報を持っていない。ところで、悪いコンパイラーも同じことをする。どんなに優れたコンパイラーでも、命令が完了するのを待つことがあるのを防げるとは限らない。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

スクラム実践者が知るべき97のこと

スクラム実践者が知るべき97のこと

Gunther Verheyen, 吉羽 龍太郎, 原田 騎郎, 永瀬 美穂

Publisher Resources

ISBN: 9798341626010