PowerShell 7.0.0 Preview1 パフォーマンス比較 その2

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第54回】PowerShell 7.0.0 Preview1 パフォーマンス比較 その2

[2019/06/18 07:00]後藤大地 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

PowerShell 7.0.0 Preview1の性能測定

「PowerShell 7.0.0 Preview1」はベースで採用している.NET Coreのバージョンが.NET Core 2.1から.NET Core 3.0へ移行したことで、パフォーマンスが大幅に向上するとされている。

確認のために前回、PowerShell 6.1のときと同じベンチマークを実施してみたが、逆にパフォーマンスが悪化する結果となった。

ただし前回は、PowerShellの”ホームグランド”であるWindows 10ではなくmacOS Mojaveで実施している。Windows 10で実施するとまた違った結果が得られる可能性がある。今回は前回と同じベンチマークをWindows 10で実施してみよう。

ベンチマーク内容

実行するベンチマークは次のとおりだ。前回と同じである。

処理するCSVデータのエンコーディングはUTF-8には変更せずにダウンロードしてきたファイルのまま実行している。Windows 10で処理する場合には変更する必要がないためだ。

Group-Objectベンチ

Measure-Command { 1..100000 | % {Get-Random -Minimum 1 -Maximum 10000} | Group-Object }

Sort-Objectベンチ

Measure-Command { 1..100000 | % {Get-Random -Minimum 1 -Maximum 10000} | Sort-Object }

Import-Csvベンチ

Measure-Command {$a = Import-Csv -Header '1','2','3','4','5','6','7','8','9','10','11','12','13','14','15' KEN_ALL.CSV}

Import-CsvベンチではCSVファイルをデータとして使用する。「読み仮名データの促音・拗音を小書きで表記しないもの - zip形式 日本郵便」で公開されている全国一括 (1,687,251 Byte)である。

KEN_ALL.CSV

01101,"060  ","0600000","ホツカイドウ","サツポロシチユウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064  ","0640941","ホツカイドウ","サツポロシチユウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0
01101,"060  ","0600041","ホツカイドウ","サツポロシチユウオウク","オオドオリヒガシ","北海道","札幌市中央区","大通東",0,0,1,0,0,0
01101,"060  ","0600042","ホツカイドウ","サツポロシチユウオウク","オオドオリニシ(1-19チヨウメ)","北海道","札幌市中央区","大通西(1〜19丁目)",1,0,1,0,0,0
01101,"064  ","0640820","ホツカイドウ","サツポロシチユウオウク","オオドオリニシ(20-28チヨウメ)","北海道","札幌市中央区","大通西(20〜28丁目)",1,0,1,0,0,0
01101,"060  ","0600031","ホツカイドウ","サツポロシチユウオウク","キタ1ジヨウヒガシ","北海道","札幌市中央区","北一条東",0,0,1,0,0,0
01101,"060  ","0600001","ホツカイドウ","サツポロシチユウオウク","キタ1ジヨウニシ(1-19チヨウメ)","北海道","札幌市中央区","北一条西(1〜19丁目)",1,0,1,0,0,0
01101,"064  ","0640821","ホツカイドウ","サツポロシチユウオウク","キタ1ジヨウニシ(20-28チヨウメ)","北海道","札幌市中央区","北一条西(20〜28丁目)",1,0,1,0,0,0
01101,"060  ","0600032","ホツカイドウ","サツポロシチユウオウク","キタ2ジヨウヒガシ","北海道","札幌市中央区","北二条東",0,0,1,0,0,0
01101,"060  ","0600002","ホツカイドウ","サツポロシチユウオウク","キタ2ジヨウニシ(1-19チヨウメ)","北海道","札幌市中央区","北二条西(1〜19丁目)",1,0,1,0,0,0
...略...

ベンチマーク結果 - Windows 10ではパフォーマンス向上を確認

ベンチマークはWindows 10 で「PowerShell Core 6.2.0」および「PowerShell 7.0.0 Preview1」で実行した。ベンチマーク結果は次のとおり。

Group-Objectベンチ実行結果

Sort-Objectベンチ実行結果

Import-Csvベンチ実行結果

ベンチ Windows 10 pwsh 6.2.0 Windows 10 pwsh 7.0.0p1
Group-Objectベンチ 9.0 6.45
Sort-Objectベンチ 7.64 5.40
Import-Csvベンチ 4.23 3.77

ベンチマーク結果グラフ (Windows 10)

ご覧の通り、Windows 10ではpwsh 6.2.0からPowerShell 7 Preview1への変更でパフォーマンスが向上したことを確認できる。予想どおりの結果だ。

比較のために、macOS Mojaveで実施した前回の結果を次に掲載する。

ベンチ macOS pwsh 6.2.1 macOS pwsh 7.0.0p1
Group-Objectベンチ 16.39 20.26
Sort-Objectベンチ 16.25 20.30
Import-Csvベンチ 4.36 4.68

ベンチマーク結果グラフ (macOS Mojave)

これを見ると、そもそもWindows 10で動作するPowerShell CoreはmacOS Mojaveで動作するPowerShell Coreよりも性能がよいことがわかる。もともとWindowsで開発されてきた技術であるため、然もありなんといったところだが、計測してみるとその違いがよくわかる。

PowerShell 7.0.0 Preview1の実装が同じだとすれば、macOS Mojaveにおける.NET Core 3.0(最新版はPreview6)の性能があまり優れた状態ではないとも考えられる。その場合、macOSにおける.NET Core 3.0のパフォーマンスが向上すればPowerShell Core 7の性能も向上するのだろう。

とはいえ、macOSで.NET Coreを必要とする状況はそれほど多くないだろうから、対応の優先順位が高くなるとはなかなか考えづらい。現在は、macOSでWindows 10と同じソフトウェアが動作する環境を作ってくれているエンジニアらに感謝の念を持って改善を待つのがよさそうだ。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る