知識マップ: Windowsでプログラムのバージョン別速度を正しく比較する方法
記事「Windowsでプログラムのバージョン別速度を正しく比較する方法」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は、Windows上でプログラムのバージョン間の速度を比較する際の再現性をテーマに、Power mode(オーバーレイ)とPower planという2層の電源設定を固定・記録することが前提になることを示す。Power modeの違いはコア駐車などPPMの挙動を左右し、Modern Standby対応デバイスではPower planの選択肢自体がBalanced系に制限される。検索インデックスやDefenderのスキャン、通知といったバックグラウンド処理は測定値のブレの原因になり得るため、除外設定やクリーンブート、通知の抑制で軽減する。Wall-clock time・CPU time・Cycle countをQueryPerformanceCounter・GetProcessTimes・QueryProcessCycleTimeでそれぞれ計測し、差が小さく理由が読めない場合はWPRでETWトレースを取りWPAで比較することが推奨される。
flowchart LR
accTitle: Windowsベンチマーク比較の再現性の知識マップ
accDescr: Power modeとPower planという2層の電源設定を固定・記録することがベンチマークの再現性の前提になること、検索インデックスやDefenderスキャンなどのバックグラウンド処理が測定値のブレを生み除外設定やクリーンブートで軽減できること、Wall-clock time・CPU time・Cycle countをそれぞれ専用APIで計測すること、差が小さいときにWPRとWPAで原因を掘り下げる流れを示す図
benchmark_reproducibility["ベンチマークの再現性"]
power_mode["電源モード/電源プラン(PPM)"]
power_plan["Power plan(電源プラン)"]
powercfg["powercfg"]
modern_standby["Modern Standby対応デバイス"]
core_parking["Core Parking"]
search_indexing["検索インデックス作成"]
benchmark_result_variance["ベンチマーク結果のばらつき(ブレ)"]
exclusion_setting["除外設定(フォルダー除外)"]
clean_boot["クリーンブート(clean boot)"]
do_not_disturb["Do not disturb(通知の抑制)"]
wpr["Windows Performance Recorder(WPR)"]
etw["ETW(Event Tracing for Windows)"]
wpa["Windows Performance Analyzer(WPA)"]
inconclusive_benchmark_result["差が小さい・理由が読めないベンチマーク結果"]
wall_clock_time["Wall-clock time(実時間)"]
queryperformancecounter["QueryPerformanceCounter(QPC)"]
cpu_time["CPU time(ユーザー+カーネル時間)"]
getprocesstimes["GetProcessTimes"]
cycle_count["Cycle count(CPUサイクル数)"]
queryprocesscycletime["QueryProcessCycleTime"]
process_priority["優先度クラス(priority class)"]
start_command["startコマンド"]
processor_affinity["プロセッサアフィニティ(affinity mask)"]
processor_groups["プロセッサグループ(Processor Groups)"]
benchmark_reproducibility -->|"前提とする"| power_mode
benchmark_reproducibility -->|"前提とする"| power_plan
power_plan -->|"で構成できる"| powercfg
modern_standby -.->|"両立しない"| power_plan
core_parking -.->|"で構成できる"| power_mode
search_indexing -.->|"原因になり得る"| benchmark_result_variance
exclusion_setting -.->|"軽減する"| benchmark_result_variance
clean_boot -->|"軽減する"| benchmark_result_variance
do_not_disturb -.->|"軽減する"| benchmark_result_variance
wpr -->|"利用する"| etw
wpa -->|"利用する"| etw
wpa -.->|"前提とする"| wpr
wpr -->|"推奨される対応"| inconclusive_benchmark_result
wall_clock_time -->|"で確認できる"| queryperformancecounter
cpu_time -->|"で確認できる"| getprocesstimes
cycle_count -->|"で確認できる"| queryprocesscycletime
process_priority -->|"で構成できる"| start_command
processor_affinity -->|"で構成できる"| start_command
processor_affinity -.->|"前提とする"| processor_groups
benchmark_reproducibility -.->|"利用する"| wall_clock_time
benchmark_reproducibility -.->|"利用する"| cpu_time
benchmark_reproducibility -.->|"利用する"| cycle_count
benchmark_result_variance -->|"両立しない"| benchmark_reproducibility
benchmark_reproducibility -.->|"原因になり得る"| inconclusive_benchmark_result
benchmark_reproducibility -.->|"利用する"| start_command
概念間の関係(全25件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- ベンチマークの再現性は電源モード/電源プラン(PPM)を前提とします。
- ベンチマークの再現性はPower plan(電源プラン)を前提とします。
- Power plan(電源プラン)はpowercfgで構成できます。
- Modern Standby対応デバイスはPower plan(電源プラン)と両立しません。
- Core Parkingは電源モード/電源プラン(PPM)で構成できます。
- 検索インデックス作成はベンチマーク結果のばらつき(ブレ)の原因になることがあります。
- 除外設定(フォルダー除外)はベンチマーク結果のばらつき(ブレ)を軽減します。
- クリーンブート(clean boot)はベンチマーク結果のばらつき(ブレ)を軽減します。
- Do not disturb(通知の抑制)はベンチマーク結果のばらつき(ブレ)を軽減します。
- Windows Performance Recorder(WPR)はETW(Event Tracing for Windows)を利用します。
- Windows Performance Analyzer(WPA)はETW(Event Tracing for Windows)を利用します。
- Windows Performance Analyzer(WPA)はWindows Performance Recorder(WPR)を前提とします。
- Windows Performance Recorder(WPR)は差が小さい・理由が読めないベンチマーク結果に対する本記事の推奨です。
- Wall-clock time(実時間)はQueryPerformanceCounter(QPC)で確認できます。
- CPU time(ユーザー+カーネル時間)はGetProcessTimesで確認できます。
- Cycle count(CPUサイクル数)はQueryProcessCycleTimeで確認できます。
- 優先度クラス(priority class)はstartコマンドで構成できます。
- プロセッサアフィニティ(affinity mask)はstartコマンドで構成できます。
- プロセッサアフィニティ(affinity mask)はプロセッサグループ(Processor Groups)を前提とします。
- ベンチマークの再現性はWall-clock time(実時間)を利用します。
- ベンチマークの再現性はCPU time(ユーザー+カーネル時間)を利用します。
- ベンチマークの再現性はCycle count(CPUサイクル数)を利用します。
- ベンチマーク結果のばらつき(ブレ)はベンチマークの再現性と両立しません。
- ベンチマークの再現性は差が小さい・理由が読めないベンチマーク結果の原因になることがあります。
- ベンチマークの再現性はstartコマンドを利用します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。