色々なパソコンでメモ帳の起動にかかる時間を計測してみる。

自作パソコン コンピュータ
自作パソコン

PowerShellにはMeasure-Commandというスクリプトの実行時間を計測するコマンドレットあります。
これを使ってアプリケーションの起動速度を計測できないかと思考錯誤してみました。
System.Diagnostics.Processでアプリケーションの起動し.WaitForInputIdle()で入力可能状態を待ちます。
アプリケーションを起動し入力可能になるまでにかかった時間を計測することで起動にかかる時間を割り出せます。
良さそうな方法ですが、この方法で入力待ちを拾えるアプリケーションはメモ帳だけしか見つかりませんでした。
個人的にメモ帳をよく使いますのでこれはこれでよいかと思います。
ただ、メモ帳だと起動が一瞬すぎて面白みに欠けるので100回ほど起動させてみます。

スクリプト

<#
.SYNOPSIS
 アプリケーションの起動にかかる時間を計測
.DESCRIPTION
 WaitForInputIdle利用
#>

using namespace System.Diagnostics

param(
    $AppPath = (Join-Path $env:SystemRoot 'notepad.exe')
)

$num = 100

$processor = Get-WmiObject Win32_Processor | Select-Object -First 1 | % { $_.Name }

Write-Host ("{0}" -f $processor)

Write-Host ("{0}の起動速度を計測します。" -f (Split-Path -Leaf $AppPath))

$result = Measure-Command {
    for ($i = 0; $i -lt $num; $i++)
    {
        [Process]::new() | % {
            $_.StartInfo.FileName = $AppPath

            $_.Start() | Out-Null # 起動

            $_.WaitForInputIdle() | Out-Null # 入力待ち
            $_.CloseMainWindow() | Out-Null # 閉じる
        }
    }
}
Write-Host ("回数:{0}回" -f $num)
Write-Host ("トータル:{0}秒" -f $result.TotalSeconds)
Write-Host ("平均起動時間:{0}秒" -f ($result.TotalSeconds / $num))
Intel(R) Celeron(R) CPU 3965U @ 2.20GHz
notepad.exeの起動速度を計測します。
回数:100回
トータル:18.3057431秒
平均起動時間:0.183057431秒

結果

プロセッサ名メモ帳100回(秒)
AMD Ryzen 5 2600 Six-Core Processor9
AMD Ryzen3 3200U with Radeon Vega Mobile Gfx13
Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz13
Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz14
Intel(R) Celeron(R) CPU 3965U @ 2.20GHz18

メモ帳の起動では処理が軽すぎて差が出ないとも考えましたが、意外と差が出ていて、なにが速度に影響を与えているか調べてみるのも面白いと思います。

そういえば前回のスーパーπの結果と順位がほぼ一緒なので、シングルスレッド性能の影響が大きいのかもしれません。
JavaScriptとcanvasでグラフを描いてみる「スーパーπ104桁結果一覧」
円周率の計算時間を計測してくれるプログラム「スーパーπ」を手持ちのパソコンで実行してみました。結果プロセッサ名104桁(秒)AMD Ryzen 5 2600 Six-Core Processor12Intel(R) Core(TM) i5-...

トップのRyzen5と最下位のCeleronで倍の時間がかかるのは結構大きいです。動作のほうも一回一回のメモ帳の起動終了は一瞬ですが、両者のパソコンでは明らかに違いを目視できます。ここまで違うと普段使っていて動きの違いを体感することが出来ますが、意外とCeleronでも遅いですが我慢できる範囲です。Celeron搭載のパソコンは、はじめHDDだったのですが動きの遅さに我慢できずSSD化しています。

トータルパフォーマンスを考えるとマルチスレッド性能が求められますが、OSの操作などの快適性はシングルレッド性能が影響しているように思えます。2コア4スレッドでブーストクロック5GHzオーバーなシングルスレッド性能特化なCPUを作ってくれないかなぁと思う今日このごろです。

コメント