4.2 2 つの手法による顔の色の変更
Java3D
では,シーングラフに存在する物体を表示する.それより,物体の内容の変更を行う方法として次の
2
つを考えた.1.あらかじめ変更する物体のオブジェクトを生成しておき,ボタンを押したときにそのシ
ーングラフにぶら下げられているオブジェクトを変更したい物体のオブジェクトにつなぎ なおす方法(以後,この方式をセレクト型と書く)
2.ボタンを押すまでオブジェクトの生成は行わず,変更のボタンを押された時点で新たに
その物体のオブジェクトを作り直して表示する方法(以後,この方式をクリエイト型と書く)
1
のセレクト型の場合,表示したい物体をあらかじめオブジェクト生成して置きつなげ 直すだけという方式であるため,ボタンを押して物体の表示を変える際の処理は速いが,メモリを多く使用することが予想される.
一方
2
のクリエイト型の場合,表示するたびにオブジェクトのの生成を行うために,メ モリの使用率を低く押さえられるが,ボタンを押した際の処理に時間がかかると考えられ る.4.3 プログラムの起動時間とボタンを押した時の処理時間の計測
4.3.1 Java 3 D 1.1 ,JavaVM , メインメモリ 64M バイトでの測定
4.2 で説明したプログラムに起動時間とボタンを押したときの時間を測るために,時間 を測るコマンドを入れて,起動時間と処理の時間を測定した.
下に,起動時間を含めた処理時間のグラフと,処理時間のみのグラフを示す.
図-4.3.1 起動時間と処理時間の比較
図-4.3.2 (図
4.2.1)の処理時間のみを表したグラフ
02000 4000 6000 8000 10000 12000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55
回数(回)
時間(msec)
クリエイト型 セレクト型
0 200 400 600 800 1000 1200
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
回数( 回)
時間 (msec)
クリエイト型 セレクト型
図
4.3.1
より,クリエイト型の方が起動時間は平均で約1100msec
速くなっている.こ れはクリエイト型ではボタンを押すまで顔のオブジェクトを作成しないため,起動時に顔 の数だけオブジェクトを生成するセレクト型より速くなったと思われる.また,クリエイト型は
1
回目の実行の際に初めて顔のオブジェクトを生成するため,平 均で979msec
となり,セレクト型の165msec
と比較して約1/5
になった.それ以降の回の測定でも,ボタンを押すたびにオブジェクト生成を行うクリエイト方は セレクト型に比べて全体的に処理に時間がかかっている.
また,両方の型で,特定の回数で処理時間が多くかかるところが見られた.これは1つ の予想として,この回のタイミングでガーベッジコレクションが働いたと考えられる.
4.3.2 Java 3 D 1.1 ,JavaVM , でメモリを増やした場合の測定
現在のまで行った環境である
64Mバイトのメインメモリを増やして計測を行うとどう
変わるかをメモリ以外同じ環境で測定を行った.結果をメモリが
96M
バイトの場合、160Mバイトの場合それぞれ下に示す。図-4.3.3 メモリ
96M
バイト時の起動時間と処理時間図-4.3.4 メモリ
96M
バイト時の処理時間0 2000 4000 6000 8000 10000 12000 14000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55
回数( 回)
時間( msec)
クリエイト型 セレクト型
0 200 400 600 800 1000 1200 1400
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
回数( 回)
時間( msec)
クリエイト型 セレクト型
図-4.3.5 メモリ
160M
バイト時の起動時間と処理時間図-4.3.6 メモリ
160M
バイト時の処理時間 02000 4000 6000 8000 10000 12000 14000
1 5 9 13 17 21 25 29 33 37 41 45 49 53
実行回数(回)
起動時間( msec)
クリエイト型 セレクト型
0 200 400 600 800 1000 1200
2 6 10 14 18 22 26 30 34 38 42 46 50 54
実行回数( 回)
起動時間 (msec)
クリエイト型 セレクト型
メインメモリを増やしての計測の結果,メモリを増やしても速度は速くならなかった.
これは,JavaVM の使用できるメモリの最大値がデフォルトで
64M
となっているため,それを越えるメモリを増やしても使用されないためと思われる.
4.3.3 Java 3 D 1.1 で HotSpot を使用した場合 の測 定
ここで,特定の回数で処理が多くなったことの原因として考えられるガーベッジコレク ションを効率よく行わせて処理をスムーズにするために,JavaVM として
HotSpot(Java HotSpot Performance Engin)を使用して測定を行うことにする. HotSpot
は高速化のため の機構特徴を3
つ持ち,1つ目はJava2
に含まれている標準のJavaVM
よりも高速かつ 効率的なガーベッジコレクト機能をサポートしている.2 つ目は,プログラムの実行時に そのボトルネックを検出し,ネーティブ・コンパイルを実行する.3 つ目は,大容量のメモ リ空間やマルチプロセッサを有効に使うためのスレッド・チューニングの機能を備えてい る.以下に
HotSpot
を使用した場合の測定結果をメモリの量が異なる場合で分けて示す.図-4.3.7 メモリ
96M
バイト時HotSpot
使用した場合の起動時間と処理時間図-4.3.8 メモリ
96M
バイト時HotSpot
使用した場合の処理時間 02000 4000 6000 8000 10000 12000 14000 16000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55
実行回数(回)
時間( msec)
クリエイト型 セレクト型
0 2000 4000 6000 8000 10000 12000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
実行回数( 回)
時間( msec)
クリエイト型 セレクト型
図-4.3.9 メモリ
160M
バイト時HotSpot
使用した場合の起動時間と処理時間図-4.3.10 メモリ
160M
バイト時HotSpot
使用した場合の処理時間0 2000 4000 6000 8000 10000 12000 14000 16000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
実行回数(回)
起動時間( msec)
クリエイト型 セレクト型
0 2000 4000 6000 8000 10000 12000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
実行回数(回)
起動時間( msec)
クリエイト型 セレクト型
図-4.3.7~10より
HotSpot
を使用した結果,全体的に処理の時間が遅くなり,また,特 定の回数で処理時間が以上に大きくなるところが発生した.これは,
HotSpot
によってガーベッジコレクションのタイミングが変わったが,HotSpot
はサーバ・プログラムの性能向上に力点を置いた環境でありクライアント・サイドではその 能力を発揮できず,処理に時間がかかってしまった可能性が考えられる.
4.3.4 Java 3 D 1.1.3 にした場合 の測定
HotSpotを入れるにあたって,今まで使用していた
Java3D 1.1
の後にリリースされたJava3D 1.1.1
以降では,高速化とメモリ消費量の削減がはかられているということがわかり,その違いについて調べるため,最新版の
Java3D 1.1.3
を入れ,JavaVMを使用した場合と
HotSpot
を使用した場合についてそれぞれ計測を行った.以下にその
2
種類の結果を示す.図-4.3.11 メモリ
160M
バイト時Java3D 1.1.3
にしてJavaVM
を使用した場合の起動時間と処理時間図-4.3.12 メモリ
160M
バイト時Java3D 1.1.3
にしてJavaVM
を使用した場合の処理時間0 2000 4000 6000 8000 10000 12000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
実行回数(回)
起動時間 (msec)
クリエイト型 セレクト型
0 200 400 600 800 1000 1200
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53
実行回数(回)
起動時間 (msec)
クリエイト型 セレクト型
図-4.3.13 メモリ
160M
バイト時Java3D 1.1.3
にしてHotSpot
を使用した場合の起動時間と処理時間図-4.3.14 メモリ
160M
バイト時Java3D 1.1.3
にしてJavaVM
を使用した場合の処理時間0 2000 4000 6000 8000 10000 12000 14000 16000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52
実行回数(回)
起動時間 (msec)
クリエイト型 セレクト型
0 2000 4000 6000 8000 10000 12000
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53
実行回数(回)
起動時間 (msec)
クリエイト型 セレクト型
図