Search
Categories
Articles
Rainmeter関連
ファイル置き場
お知り合いなど

スポンサーサイト

--.--.-- | スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Rainmeter-dev] 負荷を減らす取り組み #3

2011.07.10 | Rainmeter-dev

0 Comments

r852, r856, r860 で、iniファイル読み込み部分のボトルネックを改善しました。

私の環境(Windows7 Professional x64, Phenom II X4 945 3.0GHz)でRainmeterの32bit版とOmnimo 4の1920x1080プリセットを使ってチェックして、2.0-r745で起動処理に 4.645秒かかっていたのが、2.1-r861では 1.101秒まで短縮されました。800MHz固定でも2.0-r745で 16.768秒、2.1-r861では 3.871秒で、3.0GHz固定+2.0-r745の場合よりも好結果になりました。

環境やiniファイル内の設定値によって短縮幅は変わると思いますが、たくさんのスキンを表示している環境では概ねそれなりの短縮になると思います。

iniファイルの読み出し部分は、まずiniファイルに定義されているすべてのセクションのキーと値を一度バッファリングし、そこから必要な値を取り出すという仕組みになっています(CConfigParser)。そのセクション・キー・値の実際の読み出しにGetPrivateProfileString関数を使っていたわけですが、この関数はファイル名と必要なキー情報などを渡すだけで設定値が取得できる便利な関数ではあるものの、1回の呼び出しごとにファイルをオープン・走査・クローズするため、Rainmeterのような何百行にも渡る設定を読み込もうとすると、非常にオーバーヘッドが大きくなっていました。また、各スキンの初期化にはスキン自身のファイルだけでなく、Rainmeter.iniの設定値(スキンの位置情報など)も必要なため、もしRainmeter.iniが巨大なサイズだったら、必要のないセクション情報のバッファリングという無駄な時間もスキンごとに加えられて、非常に時間がかかります。

2.1では、その読み出しバッファリング部分をセクションごとにまとめて読み込むGetPrivateProfileSection関数を使うように変更しました。この関数を使って得られた文字列を同じように使うことはできず、若干加工は必要でしたが(ダブルクォーテーションなどを取り除く、重複キーを無視するなど)、その処理を含んでも圧倒的に速いです。加えて、Rainmeter.iniからのスキン情報の読み出しについても、その用途に使う場合には不必要なセクションを読み込まないように変更しました。

2.0-r745 で3.0GHz固定にしたときの各処理時間(Omnimo 4 1920x1080):

0.00000000    [3968] Begin:
0.53327304    [3968] Refresh: 123.323 [ms] (Delete: 0.000 / ReadConf: 106.580 / ReadSkin: 11.674 / InitMM: 2.784 / Update: 0.632 / ScrToWin: 0.227 / WinDraw: 1.386 / ZPos: 0.039 / Blur: 0.000) :: WP7
0.70152634    [3968] Refresh: 166.677 [ms] (Delete: 0.000 / ReadConf: 99.560 / ReadSkin: 18.086 / InitMM: 0.403 / Update: 28.892 / ScrToWin: 0.304 / WinDraw: 19.215 / ZPos: 0.215 / Blur: 0.000) :: WP7\Background
0.94185102    [3968] Refresh: 220.942 [ms] (Delete: 0.000 / ReadConf: 104.932 / ReadSkin: 78.668 / InitMM: 34.122 / Update: 2.420 / ScrToWin: 0.297 / WinDraw: 0.470 / ZPos: 0.033 / Blur: 0.000) :: WP7\Panels\Calculator
1.14645600    [3968] Refresh: 202.764 [ms] (Delete: 0.000 / ReadConf: 103.832 / ReadSkin: 76.808 / InitMM: 18.458 / Update: 2.885 / ScrToWin: 0.230 / WinDraw: 0.515 / ZPos: 0.036 / Blur: 0.000) :: WP7\Panels\Date
1.35049486    [3968] Refresh: 202.159 [ms] (Delete: 0.000 / ReadConf: 103.152 / ReadSkin: 76.045 / InitMM: 17.464 / Update: 4.805 / ScrToWin: 0.187 / WinDraw: 0.485 / ZPos: 0.021 / Blur: 0.000) :: WP7\Panels\Donate
1.54991233    [3968] Refresh: 197.823 [ms] (Delete: 0.000 / ReadConf: 99.490 / ReadSkin: 79.105 / InitMM: 13.348 / Update: 4.951 / ScrToWin: 0.197 / WinDraw: 0.706 / ZPos: 0.024 / Blur: 0.000) :: WP7\Panels\FruitClock
1.73855186    [3968] Refresh: 186.892 [ms] (Delete: 0.000 / ReadConf: 99.157 / ReadSkin: 67.736 / InitMM: 17.005 / Update: 2.275 / ScrToWin: 0.196 / WinDraw: 0.496 / ZPos: 0.026 / Blur: 0.000) :: WP7\Panels\Internet
1.94327545    [3968] Refresh: 203.129 [ms] (Delete: 0.000 / ReadConf: 102.896 / ReadSkin: 82.281 / InitMM: 12.300 / Update: 4.934 / ScrToWin: 0.178 / WinDraw: 0.514 / ZPos: 0.024 / Blur: 0.000) :: WP7\Panels\Live
2.16145992    [3968] Refresh: 216.552 [ms] (Delete: 0.000 / ReadConf: 99.510 / ReadSkin: 82.431 / InitMM: 29.643 / Update: 4.115 / ScrToWin: 0.256 / WinDraw: 0.569 / ZPos: 0.029 / Blur: 0.000) :: WP7\Panels\Mail
2.37921739    [3968] Refresh: 216.138 [ms] (Delete: 0.000 / ReadConf: 112.161 / ReadSkin: 71.937 / InitMM: 27.395 / Update: 3.864 / ScrToWin: 0.269 / WinDraw: 0.476 / ZPos: 0.035 / Blur: 0.000) :: WP7\Panels\Marketplace
2.59491634    [3968] Refresh: 213.984 [ms] (Delete: 0.000 / ReadConf: 97.312 / ReadSkin: 98.631 / InitMM: 12.656 / Update: 4.573 / ScrToWin: 0.281 / WinDraw: 0.497 / ZPos: 0.033 / Blur: 0.000) :: WP7\Panels\Office
2.79052591    [3968] Refresh: 193.843 [ms] (Delete: 0.000 / ReadConf: 99.197 / ReadSkin: 75.737 / InitMM: 12.030 / Update: 5.903 / ScrToWin: 0.266 / WinDraw: 0.670 / ZPos: 0.040 / Blur: 0.000) :: WP7\Panels\Slideshow
3.00102401    [3968] Refresh: 208.662 [ms] (Delete: 0.000 / ReadConf: 98.610 / ReadSkin: 81.338 / InitMM: 24.290 / Update: 3.595 / ScrToWin: 0.296 / WinDraw: 0.498 / ZPos: 0.034 / Blur: 0.000) :: WP7\Panels\User
3.27318716    [3968] Refresh: 270.447 [ms] (Delete: 0.000 / ReadConf: 98.842 / ReadSkin: 117.252 / InitMM: 50.127 / Update: 3.442 / ScrToWin: 0.260 / WinDraw: 0.490 / ZPos: 0.034 / Blur: 0.000) :: WP7\Panels\Weather
3.49295640    [3968] Refresh: 218.034 [ms] (Delete: 0.000 / ReadConf: 99.597 / ReadSkin: 69.953 / InitMM: 45.639 / Update: 2.026 / ScrToWin: 0.287 / WinDraw: 0.496 / ZPos: 0.035 / Blur: 0.000) :: WP7\Panels\Zune
3.69335747    [3968] Refresh: 198.634 [ms] (Delete: 0.000 / ReadConf: 99.266 / ReadSkin: 86.022 / InitMM: 11.589 / Update: 0.998 / ScrToWin: 0.319 / WinDraw: 0.414 / ZPos: 0.025 / Blur: 0.000) :: WP7\TextItems
3.99525666    [3968] Refresh: 300.253 [ms] (Delete: 0.000 / ReadConf: 100.863 / ReadSkin: 176.172 / InitMM: 13.725 / Update: 6.710 / ScrToWin: 0.332 / WinDraw: 2.397 / ZPos: 0.054 / Blur: 0.000) :: WP7\TextItems\Bing
4.15967607    [3968] Refresh: 160.858 [ms] (Delete: 0.000 / ReadConf: 100.584 / ReadSkin: 53.607 / InitMM: 1.692 / Update: 3.417 / ScrToWin: 0.282 / WinDraw: 1.236 / ZPos: 0.039 / Blur: 0.000) :: WP7\TextItems\Day
4.33993006    [3968] Refresh: 177.807 [ms] (Delete: 0.000 / ReadConf: 99.676 / ReadSkin: 70.895 / InitMM: 5.916 / Update: 0.708 / ScrToWin: 0.284 / WinDraw: 0.308 / ZPos: 0.020 / Blur: 0.000) :: WP7\TextItems\Extra\PowerButtons
4.45923328    [3968] Refresh: 117.639 [ms] (Delete: 0.000 / ReadConf: 100.522 / ReadSkin: 15.651 / InitMM: 0.548 / Update: 0.409 / ScrToWin: 0.221 / WinDraw: 0.269 / ZPos: 0.019 / Blur: 0.000) :: WP7\TextItems\Extra\Zunegradient
4.64319468    [3968] Refresh: 182.402 [ms] (Delete: 0.000 / ReadConf: 99.705 / ReadSkin: 75.304 / InitMM: 3.246 / Update: 2.804 / ScrToWin: 0.286 / WinDraw: 1.025 / ZPos: 0.032 / Blur: 0.000) :: WP7\TextItems\GoogleSearch
4.64451313    [3968] End.

(※単位は一番左の数値が経過秒で、他はミリ秒です。[ ]内の数値はプロセスIDなので無視してください。Deleteは起動処理時には発生しないのでずっと0.000msです。2.0にはBlurもないので0.000msです。)

このうち、Rainmeter.iniからスキンの情報を読み込むのがReadConf、スキンファイル(+@Includeで参照しているファイル)の読み込みがReadSkinです。ReadConfはどれも横並びの数値になっていて、ReadSkinはバラツキはあるものの、それなりの記述量であれば大きめの数値になっています。

2.1-r861 で3.0GHz固定にしたときの各処理時間(Omnimo 4 1920x1080):

0.00000000    [5608] Begin:
0.30550823    [5608] Refresh: 9.753 [ms] (Delete: 0.000 / ReadConf: 0.613 / ReadSkin: 3.612 / InitMM: 3.738 / Update: 1.201 / ScrToWin: 0.239 / WinDraw: 0.207 / ZPos: 0.015 / Blur: 0.128) :: WP7
0.33364254    [5608] Refresh: 25.424 [ms] (Delete: 0.000 / ReadConf: 0.634 / ReadSkin: 4.282 / InitMM: 0.471 / Update: 13.071 / ScrToWin: 0.238 / WinDraw: 5.896 / ZPos: 0.238 / Blur: 0.595) :: WP7\Background
0.38909802    [5608] Refresh: 49.635 [ms] (Delete: 0.000 / ReadConf: 0.667 / ReadSkin: 14.867 / InitMM: 30.555 / Update: 2.901 / ScrToWin: 0.238 / WinDraw: 0.331 / ZPos: 0.041 / Blur: 0.036) :: WP7\Panels\Calculator
0.42295364    [5608] Refresh: 31.703 [ms] (Delete: 0.000 / ReadConf: 0.635 / ReadSkin: 11.546 / InitMM: 16.362 / Update: 2.577 / ScrToWin: 0.213 / WinDraw: 0.315 / ZPos: 0.035 / Blur: 0.019) :: WP7\Panels\Date
0.45806307    [5608] Refresh: 32.948 [ms] (Delete: 0.000 / ReadConf: 0.637 / ReadSkin: 10.754 / InitMM: 16.188 / Update: 4.789 / ScrToWin: 0.225 / WinDraw: 0.313 / ZPos: 0.022 / Blur: 0.019) :: WP7\Panels\Donate
0.49424928    [5608] Refresh: 34.087 [ms] (Delete: 0.000 / ReadConf: 0.603 / ReadSkin: 15.713 / InitMM: 11.311 / Update: 5.808 / ScrToWin: 0.228 / WinDraw: 0.377 / ZPos: 0.029 / Blur: 0.019) :: WP7\Panels\FruitClock
0.52521300    [5608] Refresh: 28.885 [ms] (Delete: 0.000 / ReadConf: 0.611 / ReadSkin: 9.948 / InitMM: 15.242 / Update: 2.473 / ScrToWin: 0.275 / WinDraw: 0.295 / ZPos: 0.023 / Blur: 0.019) :: WP7\Panels\Internet
0.55843896    [5608] Refresh: 31.197 [ms] (Delete: 0.000 / ReadConf: 0.587 / ReadSkin: 13.716 / InitMM: 11.018 / Update: 5.306 / ScrToWin: 0.242 / WinDraw: 0.290 / ZPos: 0.020 / Blur: 0.018) :: WP7\Panels\Live
0.60654968    [5608] Refresh: 46.011 [ms] (Delete: 0.000 / ReadConf: 0.595 / ReadSkin: 14.062 / InitMM: 26.823 / Update: 3.845 / ScrToWin: 0.288 / WinDraw: 0.343 / ZPos: 0.024 / Blur: 0.030) :: WP7\Panels\Mail
0.65093660    [5608] Refresh: 42.292 [ms] (Delete: 0.000 / ReadConf: 0.612 / ReadSkin: 11.119 / InitMM: 26.144 / Update: 3.811 / ScrToWin: 0.260 / WinDraw: 0.306 / ZPos: 0.022 / Blur: 0.018) :: WP7\Panels\Marketplace
0.68809325    [5608] Refresh: 35.102 [ms] (Delete: 0.000 / ReadConf: 0.605 / ReadSkin: 17.110 / InitMM: 12.163 / Update: 4.541 / ScrToWin: 0.284 / WinDraw: 0.346 / ZPos: 0.034 / Blur: 0.019) :: WP7\Panels\Office
0.72484285    [5608] Refresh: 34.482 [ms] (Delete: 0.000 / ReadConf: 0.652 / ReadSkin: 13.719 / InitMM: 12.149 / Update: 7.235 / ScrToWin: 0.323 / WinDraw: 0.353 / ZPos: 0.030 / Blur: 0.021) :: WP7\Panels\Slideshow
0.76998478    [5608] Refresh: 42.973 [ms] (Delete: 0.000 / ReadConf: 0.607 / ReadSkin: 14.877 / InitMM: 23.401 / Update: 3.472 / ScrToWin: 0.288 / WinDraw: 0.286 / ZPos: 0.022 / Blur: 0.020) :: WP7\Panels\User
0.84851992    [5608] Refresh: 76.366 [ms] (Delete: 0.000 / ReadConf: 0.611 / ReadSkin: 28.534 / InitMM: 44.160 / Update: 2.388 / ScrToWin: 0.297 / WinDraw: 0.333 / ZPos: 0.022 / Blur: 0.020) :: WP7\Panels\Weather
0.90518165    [5608] Refresh: 54.516 [ms] (Delete: 0.000 / ReadConf: 0.641 / ReadSkin: 9.657 / InitMM: 41.646 / Update: 1.944 / ScrToWin: 0.280 / WinDraw: 0.307 / ZPos: 0.022 / Blur: 0.019) :: WP7\Panels\Zune
0.93179810    [5608] Refresh: 24.463 [ms] (Delete: 0.000 / ReadConf: 0.622 / ReadSkin: 10.696 / InitMM: 10.987 / Update: 1.544 / ScrToWin: 0.287 / WinDraw: 0.288 / ZPos: 0.019 / Blur: 0.019) :: WP7\TextItems
1.03515732    [5608] Refresh: 101.258 [ms] (Delete: 0.000 / ReadConf: 0.656 / ReadSkin: 82.374 / InitMM: 12.838 / Update: 3.779 / ScrToWin: 0.233 / WinDraw: 1.331 / ZPos: 0.024 / Blur: 0.021) :: WP7\TextItems\Bing
1.05035496    [5608] Refresh: 12.756 [ms] (Delete: 0.000 / ReadConf: 0.612 / ReadSkin: 6.220 / InitMM: 1.752 / Update: 3.282 / ScrToWin: 0.248 / WinDraw: 0.598 / ZPos: 0.023 / Blur: 0.020) :: WP7\TextItems\Day
1.07089806    [5608] Refresh: 18.365 [ms] (Delete: 0.000 / ReadConf: 0.645 / ReadSkin: 10.503 / InitMM: 5.598 / Update: 1.140 / ScrToWin: 0.244 / WinDraw: 0.203 / ZPos: 0.014 / Blur: 0.019) :: WP7\TextItems\Extra\PowerButtons
1.07878351    [5608] Refresh: 5.933 [ms] (Delete: 0.000 / ReadConf: 0.617 / ReadSkin: 3.416 / InitMM: 0.505 / Update: 0.900 / ScrToWin: 0.238 / WinDraw: 0.223 / ZPos: 0.015 / Blur: 0.019) :: WP7\TextItems\Extra\Zunegradient
1.10027432    [5608] Refresh: 19.493 [ms] (Delete: 0.000 / ReadConf: 0.659 / ReadSkin: 12.370 / InitMM: 3.228 / Update: 2.420 / ScrToWin: 0.249 / WinDraw: 0.519 / ZPos: 0.029 / Blur: 0.020) :: WP7\TextItems\GoogleSearch
1.10096645    [5608] End.

2.1では、ReadConf / ReadSkinともに大幅に減りました。設定値の読み込みがボトルネックになっていた証拠ですね。

同様に、[Statistics]のネットワーク統計情報の読み込み部分にも同様の変更を入れました。インタフェース数が20程度(Windows7だと結構多くなる)で変更前は2.5ms程度、変更後は0.6ms程度でした。この程度では起動時間としては誤差のレベルですが、インタフェース数が300を越えたりするような環境では(実際にあるらしい……)、変更前で250ms程度、変更後で16ms程度でした。人によっては体感できるかな? まあ、大抵の環境はインタフェース数30以下だと思いますが。

 

ついでに、800MHzでの処理時間も貼っておきます。

2.0-r745 で800MHz固定にしたときの各処理時間(Omnimo 4 1920x1080):

0.00000000    [4648] Begin:
1.91457534    [4648] Refresh: 453.187 [ms] (Delete: 0.000 / ReadConf: 391.274 / ReadSkin: 43.899 / InitMM: 8.918 / Update: 1.825 / ScrToWin: 0.654 / WinDraw: 6.564 / ZPos: 0.052 / Blur: 0.000) :: WP7
2.51132083    [4648] Refresh: 592.166 [ms] (Delete: 0.000 / ReadConf: 367.094 / ReadSkin: 66.373 / InitMM: 1.277 / Update: 96.112 / ScrToWin: 0.675 / WinDraw: 60.110 / ZPos: 0.523 / Blur: 0.000) :: WP7\Background
3.33653235    [4648] Refresh: 766.516 [ms] (Delete: 0.000 / ReadConf: 371.296 / ReadSkin: 269.286 / InitMM: 115.934 / Update: 7.789 / ScrToWin: 0.584 / WinDraw: 1.561 / ZPos: 0.065 / Blur: 0.000) :: WP7\Panels\Calculator
4.05571699    [4648] Refresh: 714.034 [ms] (Delete: 0.000 / ReadConf: 370.189 / ReadSkin: 269.209 / InitMM: 63.423 / Update: 9.014 / ScrToWin: 0.569 / WinDraw: 1.559 / ZPos: 0.072 / Blur: 0.000) :: WP7\Panels\Date
4.76299047    [4648] Refresh: 702.392 [ms] (Delete: 0.000 / ReadConf: 362.001 / ReadSkin: 259.365 / InitMM: 61.574 / Update: 17.214 / ScrToWin: 0.630 / WinDraw: 1.537 / ZPos: 0.071 / Blur: 0.000) :: WP7\Panels\Donate
5.49550772    [4648] Refresh: 727.378 [ms] (Delete: 0.000 / ReadConf: 368.213 / ReadSkin: 290.367 / InitMM: 48.316 / Update: 17.777 / ScrToWin: 0.567 / WinDraw: 2.063 / ZPos: 0.074 / Blur: 0.000) :: WP7\Panels\FruitClock
6.18589783    [4648] Refresh: 684.854 [ms] (Delete: 0.000 / ReadConf: 367.133 / ReadSkin: 247.944 / InitMM: 59.705 / Update: 7.887 / ScrToWin: 0.549 / WinDraw: 1.560 / ZPos: 0.074 / Blur: 0.000) :: WP7\Panels\Internet
6.93167019    [4648] Refresh: 740.582 [ms] (Delete: 0.000 / ReadConf: 367.771 / ReadSkin: 307.018 / InitMM: 46.433 / Update: 17.124 / ScrToWin: 0.694 / WinDraw: 1.473 / ZPos: 0.069 / Blur: 0.000) :: WP7\Panels\Live
7.73862553    [4648] Refresh: 801.914 [ms] (Delete: 0.000 / ReadConf: 368.727 / ReadSkin: 309.323 / InitMM: 107.745 / Update: 13.780 / ScrToWin: 0.692 / WinDraw: 1.574 / ZPos: 0.072 / Blur: 0.000) :: WP7\Panels\Mail
8.52875233    [4648] Refresh: 784.818 [ms] (Delete: 0.000 / ReadConf: 405.052 / ReadSkin: 261.954 / InitMM: 101.930 / Update: 13.588 / ScrToWin: 0.722 / WinDraw: 1.503 / ZPos: 0.068 / Blur: 0.000) :: WP7\Panels\Marketplace
9.32508755    [4648] Refresh: 791.209 [ms] (Delete: 0.000 / ReadConf: 366.161 / ReadSkin: 361.487 / InitMM: 45.187 / Update: 16.127 / ScrToWin: 0.726 / WinDraw: 1.450 / ZPos: 0.070 / Blur: 0.000) :: WP7\Panels\Office
10.05527973    [4648] Refresh: 725.042 [ms] (Delete: 0.000 / ReadConf: 365.490 / ReadSkin: 278.813 / InitMM: 43.160 / Update: 34.728 / ScrToWin: 0.719 / WinDraw: 2.065 / ZPos: 0.067 / Blur: 0.000) :: WP7\Panels\Slideshow
10.82669735    [4648] Refresh: 765.907 [ms] (Delete: 0.000 / ReadConf: 363.319 / ReadSkin: 300.098 / InitMM: 88.271 / Update: 11.929 / ScrToWin: 0.739 / WinDraw: 1.475 / ZPos: 0.076 / Blur: 0.000) :: WP7\Panels\User
11.80958271    [4648] Refresh: 977.767 [ms] (Delete: 0.000 / ReadConf: 363.362 / ReadSkin: 424.933 / InitMM: 175.520 / Update: 11.466 / ScrToWin: 0.817 / WinDraw: 1.587 / ZPos: 0.081 / Blur: 0.000) :: WP7\Panels\Weather
12.62373066    [4648] Refresh: 808.623 [ms] (Delete: 0.000 / ReadConf: 361.997 / ReadSkin: 259.288 / InitMM: 175.708 / Update: 8.857 / ScrToWin: 0.792 / WinDraw: 1.912 / ZPos: 0.069 / Blur: 0.000) :: WP7\Panels\Zune
13.35214615    [4648] Refresh: 723.075 [ms] (Delete: 0.000 / ReadConf: 366.285 / ReadSkin: 314.577 / InitMM: 37.175 / Update: 3.156 / ScrToWin: 0.927 / WinDraw: 0.901 / ZPos: 0.053 / Blur: 0.000) :: WP7\TextItems
14.42826843    [4648] Refresh: 1070.985 [ms] (Delete: 0.000 / ReadConf: 368.907 / ReadSkin: 626.639 / InitMM: 45.185 / Update: 21.886 / ScrToWin: 0.863 / WinDraw: 7.415 / ZPos: 0.090 / Blur: 0.000) :: WP7\TextItems\Bing
15.00891972    [4648] Refresh: 570.003 [ms] (Delete: 0.000 / ReadConf: 361.030 / ReadSkin: 187.496 / InitMM: 5.397 / Update: 11.464 / ScrToWin: 0.755 / WinDraw: 3.795 / ZPos: 0.065 / Blur: 0.000) :: WP7\TextItems\Day
15.66145515    [4648] Refresh: 645.176 [ms] (Delete: 0.000 / ReadConf: 362.592 / ReadSkin: 257.191 / InitMM: 21.043 / Update: 2.179 / ScrToWin: 0.785 / WinDraw: 1.324 / ZPos: 0.060 / Blur: 0.000) :: WP7\TextItems\Extra\PowerButtons
16.09369469    [4648] Refresh: 427.360 [ms] (Delete: 0.000 / ReadConf: 366.310 / ReadSkin: 56.524 / InitMM: 1.874 / Update: 1.078 / ScrToWin: 0.684 / WinDraw: 0.823 / ZPos: 0.067 / Blur: 0.000) :: WP7\TextItems\Extra\Zunegradient
16.76354790    [4648] Refresh: 665.069 [ms] (Delete: 0.000 / ReadConf: 367.070 / ReadSkin: 275.162 / InitMM: 10.453 / Update: 8.414 / ScrToWin: 0.745 / WinDraw: 3.145 / ZPos: 0.080 / Blur: 0.000) :: WP7\TextItems\GoogleSearch
16.76760674    [4648] End.

スキンごとに1秒近くかかっていて、起動しきるまでに17秒もかかるので、体感でイラッとできそうです……。

2.1-r861 で800MHz固定にしたときの各処理時間(Omnimo 4 1920x1080):

0.00000000    [5764] Begin:
1.09438074    [5764] Refresh: 32.176 [ms] (Delete: 0.000 / ReadConf: 2.178 / ReadSkin: 12.839 / InitMM: 9.715 / Update: 5.841 / ScrToWin: 0.525 / WinDraw: 0.683 / ZPos: 0.040 / Blur: 0.355) :: WP7
1.18408632    [5764] Refresh: 83.084 [ms] (Delete: 0.000 / ReadConf: 2.191 / ReadSkin: 18.323 / InitMM: 1.387 / Update: 46.709 / ScrToWin: 0.540 / WinDraw: 12.896 / ZPos: 0.509 / Blur: 0.528) :: WP7\Background
1.36931193    [5764] Refresh: 171.760 [ms] (Delete: 0.000 / ReadConf: 2.249 / ReadSkin: 46.920 / InitMM: 110.983 / Update: 9.685 / ScrToWin: 0.646 / WinDraw: 1.164 / ZPos: 0.059 / Blur: 0.054) :: WP7\Panels\Calculator
1.48795068    [5764] Refresh: 112.209 [ms] (Delete: 0.000 / ReadConf: 2.229 / ReadSkin: 41.019 / InitMM: 58.662 / Update: 8.775 / ScrToWin: 0.607 / WinDraw: 0.814 / ZPos: 0.050 / Blur: 0.053) :: WP7\Panels\Date
1.61339164    [5764] Refresh: 118.684 [ms] (Delete: 0.000 / ReadConf: 2.084 / ReadSkin: 39.831 / InitMM: 58.279 / Update: 16.965 / ScrToWin: 0.603 / WinDraw: 0.818 / ZPos: 0.049 / Blur: 0.054) :: WP7\Panels\Donate
1.74107206    [5764] Refresh: 121.257 [ms] (Delete: 0.000 / ReadConf: 2.181 / ReadSkin: 56.382 / InitMM: 40.139 / Update: 20.832 / ScrToWin: 0.528 / WinDraw: 1.081 / ZPos: 0.058 / Blur: 0.056) :: WP7\Panels\FruitClock
1.85206628    [5764] Refresh: 104.623 [ms] (Delete: 0.000 / ReadConf: 2.156 / ReadSkin: 36.614 / InitMM: 56.643 / Update: 7.638 / ScrToWin: 0.640 / WinDraw: 0.827 / ZPos: 0.050 / Blur: 0.054) :: WP7\Panels\Internet
1.96714807    [5764] Refresh: 108.843 [ms] (Delete: 0.000 / ReadConf: 2.013 / ReadSkin: 47.570 / InitMM: 38.779 / Update: 18.746 / ScrToWin: 0.784 / WinDraw: 0.838 / ZPos: 0.058 / Blur: 0.055) :: WP7\Panels\Live
2.13873029    [5764] Refresh: 164.828 [ms] (Delete: 0.000 / ReadConf: 2.060 / ReadSkin: 51.046 / InitMM: 97.160 / Update: 12.457 / ScrToWin: 0.699 / WinDraw: 1.234 / ZPos: 0.088 / Blur: 0.083) :: WP7\Panels\Mail
2.30590582    [5764] Refresh: 160.298 [ms] (Delete: 0.000 / ReadConf: 2.178 / ReadSkin: 44.680 / InitMM: 96.782 / Update: 14.883 / ScrToWin: 0.763 / WinDraw: 0.890 / ZPos: 0.067 / Blur: 0.056) :: WP7\Panels\Marketplace
2.44558501    [5764] Refresh: 132.777 [ms] (Delete: 0.001 / ReadConf: 2.191 / ReadSkin: 64.890 / InitMM: 48.114 / Update: 15.789 / ScrToWin: 0.828 / WinDraw: 0.830 / ZPos: 0.057 / Blur: 0.078) :: WP7\Panels\Office
2.56649709    [5764] Refresh: 113.965 [ms] (Delete: 0.001 / ReadConf: 2.156 / ReadSkin: 48.005 / InitMM: 43.838 / Update: 17.935 / ScrToWin: 0.795 / WinDraw: 1.107 / ZPos: 0.069 / Blur: 0.058) :: WP7\Panels\Slideshow
2.72364855    [5764] Refresh: 149.798 [ms] (Delete: 0.001 / ReadConf: 2.110 / ReadSkin: 52.975 / InitMM: 81.809 / Update: 11.242 / ScrToWin: 0.801 / WinDraw: 0.722 / ZPos: 0.049 / Blur: 0.089) :: WP7\Panels\User
3.00420928    [5764] Refresh: 274.041 [ms] (Delete: 0.000 / ReadConf: 2.126 / ReadSkin: 100.237 / InitMM: 161.913 / Update: 7.853 / ScrToWin: 0.743 / WinDraw: 1.040 / ZPos: 0.071 / Blur: 0.057) :: WP7\Panels\Weather
3.21063256    [5764] Refresh: 199.731 [ms] (Delete: 0.001 / ReadConf: 2.106 / ReadSkin: 35.322 / InitMM: 154.121 / Update: 6.382 / ScrToWin: 0.729 / WinDraw: 0.949 / ZPos: 0.054 / Blur: 0.067) :: WP7\Panels\Zune
3.30140638    [5764] Refresh: 83.938 [ms] (Delete: 0.000 / ReadConf: 2.204 / ReadSkin: 38.493 / InitMM: 36.562 / Update: 5.039 / ScrToWin: 0.786 / WinDraw: 0.754 / ZPos: 0.048 / Blur: 0.053) :: WP7\TextItems
3.64272904    [5764] Refresh: 334.711 [ms] (Delete: 0.000 / ReadConf: 2.246 / ReadSkin: 275.321 / InitMM: 39.950 / Update: 12.537 / ScrToWin: 0.814 / WinDraw: 3.667 / ZPos: 0.080 / Blur: 0.096) :: WP7\TextItems\Bing
3.69617891    [5764] Refresh: 45.483 [ms] (Delete: 0.000 / ReadConf: 2.167 / ReadSkin: 23.528 / InitMM: 5.873 / Update: 11.235 / ScrToWin: 0.742 / WinDraw: 1.816 / ZPos: 0.064 / Blur: 0.059) :: WP7\TextItems\Day
3.76703691    [5764] Refresh: 63.805 [ms] (Delete: 0.000 / ReadConf: 2.197 / ReadSkin: 38.084 / InitMM: 18.112 / Update: 3.776 / ScrToWin: 0.826 / WinDraw: 0.712 / ZPos: 0.047 / Blur: 0.053) :: WP7\TextItems\Extra\PowerButtons
3.79392672    [5764] Refresh: 20.528 [ms] (Delete: 0.000 / ReadConf: 2.185 / ReadSkin: 11.968 / InitMM: 1.749 / Update: 3.056 / ScrToWin: 0.758 / WinDraw: 0.685 / ZPos: 0.070 / Blur: 0.054) :: WP7\TextItems\Extra\Zunegradient
3.86845541    [5764] Refresh: 67.991 [ms] (Delete: 0.000 / ReadConf: 2.216 / ReadSkin: 45.090 / InitMM: 10.302 / Update: 7.967 / ScrToWin: 0.698 / WinDraw: 1.599 / ZPos: 0.063 / Blur: 0.056) :: WP7\TextItems\GoogleSearch
3.87067127    [5764] End.

ReadConf / ReadSkinが速くなったおかげで起動時間は2.0-r745+3.0GHzよりも短くなってはいるものの、他の処理は周波数通りの遅さになってます。

 

*****

 

32bit版だけでなく64bit版でも計ってみました。

2.1-r861 で3.0GHz固定にしたときの各処理時間 x64版 (Omnimo 4 1920x1080):

0.00000000    [5220] Begin:
0.29535884    [5220] Refresh: 8.713 [ms] (Delete: 0.000 / ReadConf: 0.579 / ReadSkin: 3.278 / InitMM: 2.814 / Update: 1.533 / ScrToWin: 0.156 / WinDraw: 0.223 / ZPos: 0.014 / Blur: 0.116) :: WP7
0.32318935    [5220] Refresh: 25.608 [ms] (Delete: 0.000 / ReadConf: 0.578 / ReadSkin: 4.365 / InitMM: 0.545 / Update: 14.061 / ScrToWin: 0.216 / WinDraw: 5.493 / ZPos: 0.153 / Blur: 0.198) :: WP7\Background
0.36378396    [5220] Refresh: 34.952 [ms] (Delete: 0.000 / ReadConf: 0.611 / ReadSkin: 10.402 / InitMM: 19.935 / Update: 3.435 / ScrToWin: 0.209 / WinDraw: 0.319 / ZPos: 0.023 / Blur: 0.019) :: WP7\Panels\Calculator
0.39127129    [5220] Refresh: 25.346 [ms] (Delete: 0.000 / ReadConf: 0.655 / ReadSkin: 9.804 / InitMM: 11.789 / Update: 2.575 / ScrToWin: 0.179 / WinDraw: 0.297 / ZPos: 0.023 / Blur: 0.023) :: WP7\Panels\Date
0.41944367    [5220] Refresh: 26.046 [ms] (Delete: 0.000 / ReadConf: 0.685 / ReadSkin: 9.265 / InitMM: 11.546 / Update: 3.975 / ScrToWin: 0.190 / WinDraw: 0.336 / ZPos: 0.025 / Blur: 0.023) :: WP7\Panels\Donate
0.45034006    [5220] Refresh: 28.940 [ms] (Delete: 0.000 / ReadConf: 0.560 / ReadSkin: 13.130 / InitMM: 8.379 / Update: 6.184 / ScrToWin: 0.239 / WinDraw: 0.399 / ZPos: 0.030 / Blur: 0.018) :: WP7\Panels\FruitClock
0.47409657    [5220] Refresh: 21.743 [ms] (Delete: 0.000 / ReadConf: 0.580 / ReadSkin: 8.278 / InitMM: 10.296 / Update: 1.997 / ScrToWin: 0.255 / WinDraw: 0.296 / ZPos: 0.023 / Blur: 0.018) :: WP7\Panels\Internet
0.50490665    [5220] Refresh: 28.825 [ms] (Delete: 0.000 / ReadConf: 0.561 / ReadSkin: 11.084 / InitMM: 9.342 / Update: 7.245 / ScrToWin: 0.256 / WinDraw: 0.294 / ZPos: 0.025 / Blur: 0.018) :: WP7\Panels\Live
0.54187167    [5220] Refresh: 35.009 [ms] (Delete: 0.000 / ReadConf: 0.533 / ReadSkin: 11.894 / InitMM: 16.732 / Update: 5.216 / ScrToWin: 0.257 / WinDraw: 0.334 / ZPos: 0.025 / Blur: 0.018) :: WP7\Panels\Mail
0.57498014    [5220] Refresh: 31.100 [ms] (Delete: 0.000 / ReadConf: 0.578 / ReadSkin: 8.923 / InitMM: 16.380 / Update: 4.655 / ScrToWin: 0.245 / WinDraw: 0.256 / ZPos: 0.028 / Blur: 0.035) :: WP7\Panels\Marketplace
0.60854757    [5220] Refresh: 31.554 [ms] (Delete: 0.000 / ReadConf: 0.575 / ReadSkin: 16.109 / InitMM: 9.248 / Update: 5.034 / ScrToWin: 0.253 / WinDraw: 0.278 / ZPos: 0.037 / Blur: 0.019) :: WP7\Panels\Office
0.64207941    [5220] Refresh: 31.343 [ms] (Delete: 0.000 / ReadConf: 0.629 / ReadSkin: 11.491 / InitMM: 9.334 / Update: 9.164 / ScrToWin: 0.304 / WinDraw: 0.346 / ZPos: 0.040 / Blur: 0.035) :: WP7\Panels\Slideshow
0.67800361    [5220] Refresh: 33.722 [ms] (Delete: 0.000 / ReadConf: 0.586 / ReadSkin: 12.268 / InitMM: 16.061 / Update: 4.184 / ScrToWin: 0.296 / WinDraw: 0.286 / ZPos: 0.022 / Blur: 0.018) :: WP7\Panels\User
0.73849577    [5220] Refresh: 58.537 [ms] (Delete: 0.000 / ReadConf: 0.545 / ReadSkin: 23.442 / InitMM: 31.123 / Update: 2.894 / ScrToWin: 0.214 / WinDraw: 0.262 / ZPos: 0.020 / Blur: 0.037) :: WP7\Panels\Weather
0.77532113    [5220] Refresh: 34.845 [ms] (Delete: 0.000 / ReadConf: 0.535 / ReadSkin: 8.116 / InitMM: 22.564 / Update: 3.056 / ScrToWin: 0.225 / WinDraw: 0.291 / ZPos: 0.030 / Blur: 0.029) :: WP7\Panels\Zune
0.79825532    [5220] Refresh: 20.851 [ms] (Delete: 0.000 / ReadConf: 0.579 / ReadSkin: 8.712 / InitMM: 9.593 / Update: 1.442 / ScrToWin: 0.234 / WinDraw: 0.258 / ZPos: 0.015 / Blur: 0.018) :: WP7\TextItems
0.89462888    [5220] Refresh: 94.442 [ms] (Delete: 0.000 / ReadConf: 0.537 / ReadSkin: 75.583 / InitMM: 13.105 / Update: 3.433 / ScrToWin: 0.266 / WinDraw: 1.456 / ZPos: 0.042 / Blur: 0.020) :: WP7\TextItems\Bing
0.90817481    [5220] Refresh: 11.051 [ms] (Delete: 0.000 / ReadConf: 0.552 / ReadSkin: 5.222 / InitMM: 1.595 / Update: 2.687 / ScrToWin: 0.257 / WinDraw: 0.684 / ZPos: 0.036 / Blur: 0.019) :: WP7\TextItems\Day
0.92703229    [5220] Refresh: 16.569 [ms] (Delete: 0.000 / ReadConf: 0.588 / ReadSkin: 8.598 / InitMM: 5.395 / Update: 1.402 / ScrToWin: 0.263 / WinDraw: 0.287 / ZPos: 0.017 / Blur: 0.018) :: WP7\TextItems\Extra\PowerButtons
0.93428260    [5220] Refresh: 5.262 [ms] (Delete: 0.000 / ReadConf: 0.551 / ReadSkin: 2.826 / InitMM: 0.484 / Update: 0.896 / ScrToWin: 0.244 / WinDraw: 0.226 / ZPos: 0.018 / Blur: 0.017) :: WP7\TextItems\Extra\Zunegradient
0.95351213    [5220] Refresh: 17.309 [ms] (Delete: 0.000 / ReadConf: 0.556 / ReadSkin: 10.382 / InitMM: 3.224 / Update: 2.331 / ScrToWin: 0.224 / WinDraw: 0.531 / ZPos: 0.027 / Blur: 0.033) :: WP7\TextItems\GoogleSearch
0.95421821    [5220] End.

違いは出ないかなーと思いきや、かなり出ました。Omnimo 4で1秒切ってますね。

 

ついでに起動時の初期化の流れについて書いておきます。

Rainmeterを起動するとまず設定ファイルであるRainmeter.iniのパスやスキンのパスを確定させます。その後、Rainmeter自身のグローバル設定の読み込みや全スキンファイルのチェックを経て、上のログにあるようなスキンごとの初期化に入ります。

スキンの初期化の大部分はRefreshと同じ処理になっています。ReadConf / ReadSkinは上で書いたとおりで、設定値の読み出しです。InitMMは全Measure / Meterの初期化で、最初のUpdate処理(バックバッファへの描画はしない)はここに含まれます。次のUpdateは2回目のUpdate処理で、これはバックバッファへの描画も含まれています。ScrToWinはスキンの表示位置の確定(Updateを経てようやく座標が確定できる)で、WinDrawは描画済みのバックバッファを実際のウィンドウへ描画する処理です。ZPosがウィンドウのZ座標位置の変更、BlurがAero glass効果の付加です。

この処理を、表示するように設定されているスキン全部に対して行って、起動処理の完了となります。

 

Update処理が初期化段階で2回呼ばれるので、たまにこれがトラブルを引き起こしたりするかもしないかも。

スポンサーサイト

[Rainmeter] スキン作成時に気をつけてること #2

2011.07.08 | Rainmeter

0 Comments

前回の記事に追記しようと思ったら、どうやらPC環境移行してからLive Writerがご機嫌ななめでちゃんと上書き投稿できないみたいなので、分割することにしました。
引き続き、思いついた「やっておくといいかも~」な項目を挙げておきます。

 

0) betaといえども結構stableなので、beta版も使ってみよう

ベータ版というとあまり普段使いするものではないという印象がありますが、Rainmeterに関しては、むしろベータ版が一番安定してるんじゃないかという罠があったりなかったり。
実験目的のベータリリースはそんなになくて、実際にはほとんどがバグフィックスや処理の改善なので、自分自身の中では最新安定版(マイナーリリース版?)という位置づけです(自分で使っているものも、最新のものに自分用の改造をマージして使っています)。一応互換性も維持されてますし、気になったらベータ版も使ってみてください。

2.1からは動作環境からWindows2000とXP無印/SP1が外されて、XP SP2以降が対象になります。

 

1) 更新の必要ないMeter=ImageやMeter=StringにはUpdateDivider=-1を指定する (※2.0以降)

内容が変わらない画像(ヒストグラムや時計の背景とか)やテキスト(ヘッダ文字とか?)はUpdate間隔での更新処理が必要ないことが多いので、UpdateDivider=-1をつけておくと負荷が減ります。この2つは使われる頻度もそれなりに高いので、効果もあると思います。

2) Pluginの指定はファイル名だけを指定する

Plugin=Plugin\WebParser.dll と書くと、必ず "Rainmeterのディレクトリ\Plugins\..\Plugins\WebParser.dll" という風に "..\" が付加されて扱われるので、Plugin=WebParser.dll とだけ指定しましょう。付加されたとしても同じパスを表すことには変わらないのですが、余計な処理が減ります。

 

以下はRainmeterを使う上でやっておくといいかも~な項目です。

1) Rainmeter.ini内の無駄なエントリは削除する (※2.1未満が対象)

前回の記事を書いたときにはあまり効果ないと思っていましたが、実際に処理時間を計ってみると、エントリ数が多ければ多いほど、あまり無視できないレベルの時間がかかってました。メモリの節約効果はほとんどありませんが、使っていないエントリを削除すると処理が省けるので、やっておいて損はないです。掃除の際は、今後使いそうもないものに限定して、くれぐれも注意して削除してください。一度削除すると、消した設定値は戻せませんので。

ちなみに、2.1では読み込み部に変更を加えたので、エントリを削除しなくても問題ないレベルの速さになりました。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。