プログラム実行速度の改善 |
ドキュメントの目次 |
次に挙げるのは、プログラム実行速度を改善するために J2SDK 1.4 で行われた拡張の一部です。
- J2SDK 1.4 では、Java 2DTM テクノロジの分野でパフォーマンスが大幅に改善されました。 Java 2D のパフォーマンス拡張による副産物として、Swing や JFC など、ほかの分野のパフォーマンスにも良い影響が及んでいます。 J2SDK でのパフォーマンス改善の一例として、Solaris でのリモート X 表示が大幅に改善されています。 パフォーマンスの拡張を含む、Java 2D の拡張の詳細は、「Java 2D の新機能」を参照してください。
- New I/O API では、バッファ管理、スケーラブルなネットワークとファイル入出力、文字セットのサポート、および正規表現マッチングの分野でパフォーマンスが向上しています。 New I/O API は、java.io パッケージの入出力機能を補足するものです。 詳細は、「New I/O API」を参照してください。
- J2SDK 1.4.0 以降では、一部のリフレクト処理、特に java.lang.reflect.Field、java.lang.reflect.Method.invoke()、java.lang.reflect.Constructor.newInstance()、および Class.newInstance() が書き直されて、パフォーマンスが向上しました。 リフレクトによる呼び出しやインスタンス化は、以前のリリースに比べ数倍速くなりました。
- J2SDK のネットワーク機能では、HTTP ストリーミングのパフォーマンスが改善されました。
- BigInteger クラスに、素数を生成するための新しい static メソッド probablePrime が追加されました。 従来は、BigInteger の素数を生成する方法は 1 つしかなく、メソッドの呼び出し側から、「確実性」(呼び出し側が許容できる、結果が素数でない確率の対数) を提供する必要がありました。 しかし、提供する確実性の値が不適切だと、パフォーマンスが低下したり (確実性の値が高すぎる場合)、重大なバグが発生したり (値が低すぎる場合) することがありました。 この新しい素数生成メソッドは、ANSI のドラフト仕様に基づいて自動的に判別される適切な確実性の値を使用する、素数生成のための効率的なアルゴリズムを提供します。
- Java HotSpot[TM] 仮想マシンでは、「フルスピードデバッグ」を使用するようになりました。 以前のバージョンの HotSpot では、デバッグが有効になると、インタプリタのみを使用してプログラムが実行されていました。 今回、デバッグを有効にして実行しているプログラムが HotSpot テクノロジによるフルパフォーマンスの利点を利用できるようになりました。 パフォーマンスの改善によって、長時間実行するプログラムのデバッグが容易に行えるようになりました。 また、フルスピードでテスティングを行ったり、例外上でデバッガを起動できるようになりました。
次に挙げるのは、プログラム実行速度および一般的な実行時パフォーマンスを改善するために、以前のリリースである J2SDK 1.3 で加えられた変更の一部です。 これらの拡張は、J2SDK 1.4 にも引き継がれています。詳細は、BugParade の Web サイトにある関連するバグレポートのリンクを参照してください。
- readUTF および writeUTF のパフォーマンスの改善 - DataInputStream および DataInputStream の readUTF メソッドおよび writeUTF メソッドの実装が変更され、パフォーマンスが改善されました。 これは、BugParade の Web サイトにあるバグ番号 4219771 の修正です。
- JScrollPane ペイントのパフォーマンスの改善 - JScrollPane の実装が改善され、ダブルバッファリングが使用されていないときに過剰なペイントと画面のちらつきが起きないようになりました。
- JTable のパフォーマンスの改善 - JTable の列処理機能のパフォーマンスが改善されました。 以前は、列の追加操作または列幅の再計算操作のパフォーマンスは、列数が増えるにつれて十分にスケーリングしませんでした。 今回、列処理機能の実装が変更され、スケーラビリティが改善されました。 これは、BugParade の Web サイトにあるバグ番号 4223642 の修正です。
- ペイントの合体 - 改善されたペイント合体アルゴリズムの実装によって、ペイントのパフォーマンスが拡張されました。 再ペイントが必要な領域は、イベントキューに送信されるときに、単一の、四角形でない再ペイント領域に合体されます。 これにより、再ペイントがバッチ処理され、以前のリリースより効率的に複数の再ペイントが同時実行されます。
- フレームのサイズ変更 - トップレベルフレームのサイズ変更が改善されました。
- フレームの内部移動 - Graphics.copyArea 呼び出しの使用により、Swing の DefaultDesktopManager が再描画する量は、フレームをドラッグするときに比べて大幅に少なくなりました。
- BigIntenger のパフォーマンス向上 - Pure Java のプログラミング言語コードにクラス java.math.BigInteger が実装し直されました。 以前は、BigInteger の実装は Plumb C ライブラリをベースにしていました。 新しい実装により、すべての標準操作が古い実装よりずっと高速に実行されます。 新しい実装では、実行する操作によっては 5 倍以上高速になります。
- 数値演算のパフォーマンスを向上させる機能の提供 - Java 2 プラットフォームに、一般的な数値演算を実行するための API を提供する 2 つのクラスが追加されました。
- java.lang.StrictMath - クラス java.lang.StrictMath は、以前のバージョンの Java プラットフォームのクラス java.lang.Math の名前が変わったものですが、ほかの点では Math の仕様を保持しています。 このクラスは、特にすべての実装でビット単位まで再現可能な結果を返すように定義されています。
- java.lang.Math - クラス java.lang.Math は、クラス StrictMath と同じ API のセットを提供します。 ただし、クラス StrictMath の一部の数値関数とは違って、クラス Math の等価な関数のすべての実装は、ビット単位まで同じ結果を返すようには定義されておらず、特定の制約内で結果が異なることがあります。 このゆるやかさによって、厳密な再現性が要求されない実装においてパフォーマンスの向上が可能になります。
Copyright © 2001 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先: jdk-comments@eng.sun.com |