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

【連載】

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

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

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

  • サーバ/ストレージ

サーバ/ストレージ

PowerShell 7.0.0 Preview1の性能測定

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

本連載では、実際にどの程度性能に差があるのか確認するためにこれまで2回にわたってmacOS MojaveとWindows 10でベンチマークを実施してきた。その結果、次のようなことが見えてきた。

  • WindowsとmacOSではWindowsの方が高速に動作する
  • WindowsではPowerShell 7.0.0 Preview1の方が実行速度が速い
  • macOSではPowerShell 7.0.0 Preview1の方が実行速度が遅い


ただし、比較の対象はプレビュー版なので、デバッグオプションやビルドオプションなどが影響を与えている可能性もある。ビルドなどについては調べずに結果だけを見ているので、ここでの結果は参考程度にとどめておく必要はある。

実装の系統としてmacOS版とLinux版がそう大きく変わるとは思えないが、今回はUbuntu 18.04 LTSで同様のベンチマークを実施してみようと思う。

ベンチマーク内容

これまでと同じ内容だが、今回もベンチマークの内容を説明しておく。次のコマンドレットを実行したときの処理時間をベンチマーク結果としている。

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-UTF8.CSV}

Import-CsvベンチではCSVファイルをデータとして使用する。ここでは「読み仮名データの促音・拗音を小書きで表記しないもの - zip形式 日本郵便」で公開されている全国一括 (1,687,251 Byte)をダウンロードしてきて、エンコーディングをUTF-8に変更したものを使っている。

KEN_ALL-UTF8.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
...略...

次に今回計測したLinuxでの実行結果と、これまでに計測したmacOS MojaveとWindows 10での実行結果を次にまとめて掲載しておく。

ベンチマーク結果

Group-Objectベンチ実行結果

Sort-Objectベンチ実行結果

Import-Csvベンチ実行結果

ベンチ Ubuntu 18.04 pwsh 6.2.1 Ubuntu 18.04 pwsh 7.0.0p1
Group-Objectベンチ 16.03 14.57
Sort-Objectベンチ 15.48 14.19
Import-Csvベンチ 4.75 4.06

ベンチマーク結果グラフ (Ubuntu 18.04 LTS)

前々回紹介した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の実行結果

ベンチ 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)

ベンチマークからの考察

LinuxではPowerShell Core 6.2.1よりもPowerShell 7.0.0 Preview1の方が処理が高速になっていた。しかも、PowerShell Core 6.2.1ではベンチマーク結果が大きく上下するときがあったのだが、PowerShell 7.0.0 Preview1ではそれがなく安定していた。

PowerShell CoreはLinuxユーザの利用が増加しているとのことなので、そのせいでLinuxにおけるPowerShell Coreの開発がいい具合に進んでいるのかもしれない。また、LinuxではPowerShell Coreの基盤となるMonoなどの実装環境が優れている可能性も考えられる。

簡単なベンチマークだが、これまでの結果から大雑把に次のようなことが言えそうだ。

  • PowerShell CoreまたはPowerShell 7はWindowsでの性能がもっとも優れている
  • LinuxではPowerShell CoreよりもPowerShell 7の方が性能が期待できる
  • macOSではPowerShell 7はあまり性能が期待できない


なぜmacOS版だけが性能が劣化しているのかはこのベンチマークだけからはわからないが、同じコマンドレットの実行でこれだけはっきりと差がでているので、なんらかの原因があるのだろう。もしかしたら実施時期が問題だった可能性もある。

PowerShell CoreまたはPowerShell 7はクロスプラットフォームでWindows、macOS、Linuxという複数のオペレーティングシステムで動作することにも魅力がある。macOSだけ性能がでないというのはちょっと悲しいものがある。今後の開発でこうした状況が改善するかどうか見ていきたいところだ。

参考資料

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

一覧はこちら

連載目次

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

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

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

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

関連リンク

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

会員登録(無料)

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

一覧はこちら

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

一覧はこちら

ページの先頭に戻る