ホーム 主筆 その他ソフト その他情報 Syuhitu.org English

Windows関連

スクリーンセーバー作成法

半透明ウインドウの性能

bootfont.bin

キャビネット形式

ウインドウスタイルをいじる

Java製ソフトをServiceに登録する

イベントログにメッセージを出力する

コントロールパネルにアイコンを追加する

スクリプトによる拡張1

スクリプトによる拡張2

ガジェットの作成

大容量メモリ

メモリ搭載量の下限に挑む

スパースファイルにする

表示されるアイコンの種類を調べてみた

メモリマップIOとエラー処理

ファイルを作る順番と速度の関係

Cryptography API: Next Generationを使う

Windows 10のアクセントカラー

iSCSIディスクにバックアップを取る

サーバプロセスを分離して実装する

サーバプロセスを分離して実装する - F#

レジストリに大量に書き込む

Solaris関連

OpenGL

Solaris設定

ディレクトリの読み込み

主筆プラグイン開発

マルチスレッドでの開発

door

音を出す

Blade100の正しい虐め方

パッケージの作成

画像入出力

BMPファイル

ICOファイル

ANIファイル

JPEGファイル

減色アルゴリズム

減色アルゴリズムの並列化

その他アルゴリズムなど

自由軸回転

Base64

文字列操作

CPU利用率の取得

正規表現ライブラリ

メタボールを作る

メタボールを作る2

正規表現とNFA・DFA

C言語の構文解析

液晶ディスプレイを解体してみた

iSCSIの理論と実装

単一フォルダにファイルを沢山作る

USB-HUBのカスケード接続

SafeIntの性能

VHDファイルのフォーマット

USBメモリに書き込み続けてみた

半透明ウインドウの性能について

2005年9月4日公開

ウインドウスタイルをいじるで最後の方に軽く言ったが、ウインドウを半透明にするとかなり速度が落ちる。

だがしかし、Vectorの「ダウンロード > Windows > ユーティリティ > デスクトップ設定」等を見ると、ウインドウの半透明化を行うソフトというのがあり、それらのうたい文句に下記のようなものがある。

  • 高速
  • メモリ使用量0

本当だろうか? 嘘だったら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

結果

  • マシン1
ウインドウサイズ 不透明度 時間(秒)
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
  • マシン2
ウインドウサイズ 不透明度 時間(秒)
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

 結果

  • マシン1
ウインドウサイズ 不透明度 時間(秒)
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
  • マシン2
ウインドウサイズ 不透明度 時間(秒)
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

結果

  • マシン1
  実行前(KB) 実行後(KB) 実行後の画面
通常のウインドウ 135,356 135,456
半透明化したウインドウ 135,248 173,060

なお、この実験において、メモリ使用量はタスクマネージャのメモリ使用量の値を調べた。

考察

結果は明らかである。通常のウインドウでは100KBしか増加していないのに比較して、半透明化したウインドウでは約37MBも増加している。

無論、タスクマネージャのメモリ使用量はかなり当てにならないことを認めるにやぶさかでないが、それでも37MBは誤差の範囲で片づけられる数値ではない。よって、半透明化したウインドウはメモリを余分に使用する、と言える。

そのほか実験中に気がついたこととして、半透明化したウインドウが多数重なると相当処理速度が劣化する、と言うことを言い添えておく。

全体的な考察

以上の実験を通じて言えることとして

  • 大きなウインドウを半透明化するのは利口とは言えない。
  • 余分なメモリを使用しない、と言うことを謳い文句にしてはならない。JAROに目を付けられる。
  • 半透明化したウインドウは、絶対に右下にはみ出させてはいけない。はみ出さないような対策を講じるべきである。
  • 半透明化したウインドウが重ならないようにするべきである。
  • 個人的な要望でもあるが、半透明化しなくてもいいような選択肢を用意するべきである。

結論

今更こんな事を調べてもどうしようもない。 と言うことか?

 


連絡先 - サイトマップ - 更新履歴
Copyright (C)  2000 - 2016 nabiki_t All Rights Reserved.