|
|
|
|
|
Windows関連
スクリーンセーバー作成法
半透明ウインドウの性能
bootfont.bin
キャビネット形式
ウインドウスタイルをいじる
Java製ソフトをServiceに登録する
イベントログにメッセージを出力する
コントロールパネルにアイコンを追加する
Solaris関連
OpenGL
Solaris設定
ディレクトリの読み込み
主筆プラグイン開発
Sun Studio 11
マルチスレッドでの開発
door
音を出す
Blade100の正しい虐め方
パッケージの作成
画像入出力
BMPファイル
ICOファイル
ANIファイル
JPEGファイル
減色アルゴリズム
減色アルゴリズムの並列化
その他アルゴリズムなど
自由軸回転
Base64
文字列操作
CPU利用率の取得
正規表現ライブラリ
メタボールを作る
メタボールを作る2
正規表現とNFA・DFA
C言語の構文解析
マルチスレッド開発の傾向と対策
|
半透明ウインドウの性能について
ウインドウスタイルをいじるで最後の方に軽く言ったが、ウインドウを半透明にするとかなり速度が落ちる。
だがしかし、Vectorの「ダウンロード > Windows > ユーティリティ > デスクトップ設定」等を見ると、ウインドウの半透明化を行うソフトというのがあり、それらのうたい文句に下記のようなものがある。
本当だろうか? 嘘だったらJAROに言いつけるべきJARO。
と言うことで、実際に性能を測定してみることにしてみた。
実験を行った環境
実験の内容と結果の前に、まず、実験環境について記述する。
| マシン1
(元富士通製PC) |
OS |
Windows2000 |
| メモリ |
PC133 DIMM 384MB |
| CPU |
AMD K6-III 450MHz |
| グラフィック |
ELSA GLADIAC 511 PCI |
| ディスプレイ解像度 |
1280x1024 |
| マシン2
(日立製ノートPC FLORA270W)
思いっきり業務用 |
OS |
Windows2000 |
| メモリ |
PC2100 DDR SDRAM 256MB |
| CPU |
Pentium4M 1.8GHz |
| グラフィック |
SiS M650 |
| ディスプレイ解像度 |
1024x768 |
速度
直感的に言っても、ウインドウを半透明にすると処理速度が落ちるのが感じられる。だがここは、一応ちゃんと処理速度を測ってやろうと言うことで。
実験1
まずは、下記のような実験を行った。
ウインドウの大きさと半透明の度合いをそれぞれ変化させながら、ウインドウを(0,0)から(100,100)まで位置を移動させるのを100回行う。
実行したプログラム : VTest1_1.zip
結果
| ウインドウサイズ |
不透明度 |
時間(秒) |
| 640x480 |
不透明 |
38 |
| 640x480 |
192 |
67 |
| 640x480 |
128 |
66 |
| 640x480 |
64 |
67 |
| 800x600 |
不透明 |
80 |
| 800x600 |
192 |
103 |
| 800x600 |
128 |
103 |
| 800x600 |
64 |
103 |
| 1024x768 |
不透明 |
27 |
| 1024x768 |
192 |
177 |
| 1024x768 |
128 |
175 |
| 1024x768 |
64 |
175 |
|
 |
| ウインドウサイズ |
不透明度 |
時間(秒) |
| 640x480 |
不透明 |
14 |
| 640x480 |
192 |
72 |
| 640x480 |
128 |
71 |
| 640x480 |
64 |
71 |
| 800x600 |
不透明 |
14 |
| 800x600 |
192 |
108 |
| 800x600 |
128 |
108 |
| 800x600 |
64 |
108 |
| 1024x768 |
不透明 |
28 |
| 1024x768 |
192 |
測定不可 |
| 1024x768 |
128 |
測定不可 |
| 1024x768 |
64 |
測定不可 |
|
 |
実験2
次に、下記のような実験を行った。
ウインドウの大きさと半透明の度合いをそれぞれ変化させながら、ウインドウを消去したり表示させたりするのを300回行う。
実行したプログラム : VTest1_2.zip
結果
| ウインドウサイズ |
不透明度 |
時間(秒) |
| 640x480 |
不透明 |
17 |
| 640x480 |
192 |
45 |
| 640x480 |
128 |
47 |
| 640x480 |
64 |
46 |
| 800x600 |
不透明 |
13 |
| 800x600 |
192 |
66 |
| 800x600 |
128 |
66 |
| 800x600 |
64 |
66 |
| 1024x768 |
不透明 |
11 |
| 1024x768 |
192 |
104 |
| 1024x768 |
128 |
105 |
| 1024x768 |
64 |
104 |
|
 |
| ウインドウサイズ |
不透明度 |
時間(秒) |
| 640x480 |
不透明 |
5 |
| 640x480 |
192 |
15 |
| 640x480 |
128 |
16 |
| 640x480 |
64 |
15 |
| 800x600 |
不透明 |
5 |
| 800x600 |
192 |
23 |
| 800x600 |
128 |
22 |
| 800x600 |
64 |
22 |
| 1024x768 |
不透明 |
6 |
| 1024x768 |
192 |
33 |
| 1024x768 |
128 |
31 |
| 1024x768 |
64 |
32 |
|
 |
実験1と実験2の考察
まず明らかにいえることとして
- 半透明化したウインドウはそうでないものに比較して、確実に処理速度が落ちる。
- 速度が落ちる度合いはウインドウの面積に比例し、透明化の度合いには影響されない。
あと、実験中に気がついたことを補足。
- 不透明なウインドウ(つまり普通のウインドウ)を移動させるときには、なにやら条件がそろうと最適化が行われるらしい。やたらと早いときもあれば遅いときもある。どういうときに早くて、どうすると遅くなるのか、については特に調査していない。
- 半透明なウインドウは、画面から右下がはみ出すと極端に処理速度が落ちる。左上がはみ出しているのであれば、それ程処理速度は劣化しない。この理由より、実験1のマシン2において、ウインドウサイズが「1024x768」の実験は途中で断念した。それ程までに処理速度が劣化する。
メモリ使用量
下記のような実験を行った。
通常のウインドウと、半透明化したウインドウをそれぞれ256個生成して、メモリ使用量の増加する度合いを比較する。
実行したプログラム : VTest2_1.zip
結果

なお、この実験において、メモリ使用量はタスクマネージャのメモリ使用量の値を調べた。
考察
結果は明らかである。通常のウインドウでは100KBしか増加していないのに比較して、半透明化したウインドウでは約37MBも増加している。
無論、タスクマネージャのメモリ使用量はかなり当てにならないことを認めるにやぶさかでないが、それでも37MBは誤差の範囲で片づけられる数値ではない。よって、半透明化したウインドウはメモリを余分に使用する、と言える。
そのほか実験中に気がついたこととして、半透明化したウインドウが多数重なると相当処理速度が劣化する、と言うことを言い添えておく。
全体的な考察
以上の実験を通じて言えることとして
- 大きなウインドウを半透明化するのは利口とは言えない。
- 余分なメモリを使用しない、と言うことを謳い文句にしてはならない。JAROに目を付けられる。
- 半透明化したウインドウは、絶対に右下にはみ出させてはいけない。はみ出さないような対策を講じるべきである。
- 半透明化したウインドウが重ならないようにするべきである。
- 個人的な要望でもあるが、半透明化しなくてもいいような選択肢を用意するべきである。
結論
今更こんな事を調べてもどうしようもない。 と言うことか?
|
|
|
|