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

【連載】

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

【第53回】PowerShell 7.0.0 Preview1 パフォーマンス比較

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

  • サーバ/ストレージ

サーバ/ストレージ

PowerShell 7.0.0 Preview1の性能は?

前回は新しく公開された「PowerShell 7.0.0 Preview1」について取り上げた。このバージョンの最大の特徴は、ベースで採用している.NET Coreのバージョンが2.1から3.0へ移行したことにあるとされている。.NET Core 3.0へ移行したことでパフォーマンスが大幅に向上したという。

パフォーマンスにどの程度の差が出たのか実際に調べてみよう。本連載では、以前にPowerShell 6.1.0がリリースされたタイミングで高速になったという処理のベンチマークを行っている。当時は非常に高速になったという実証結果が得られたが、今回はこれと同じベンチマークを実施してみよう。

なお、実行環境はmacOSである。環境によってパフォーマンスが異なる可能性があること、執筆現在で公開されているのがPreview1という若いバージョンであることは考慮しておく必要がある。

ベンチマーク内容

実行するベンチマークは次のとおりだ。

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_UTF-8.CSV}

Import-CsvベンチではCSVファイルをデータとして使用する。ここでは「読み仮名データの促音・拗音を小書きで表記しないもの - zip形式 日本郵便」で公開されている全国一括 (1,687,251 Byte)をダウンロードしてきて、UTF-8に変換したデータをファイル名KEN_ALL_UTF-8.CSVとしてベンチマークを実行するディレクトリと同じディレクトリに置いて作業している。

KEN_ALL_UTF-8.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
...略...

Measure-Commandコマンドレットを使うとこんな感じで簡単にベンチマークを実施できることは、以前紹介したとおりだ。

ベンチマーク実行結果

ベンチマークはmacOSで「PowerShell Core 6.1.0」、「PowerShell Core 6.2.1」、「PowerShell 7.0.0 Preview1」で実行した。結果は次のとおり。

Group-Objectベンチ実行結果

Sort-Objectベンチ実行結果

Import-Csvベンチ実行結果

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

ベンチマーク結果グラフ

「PowerShell Core 6.1.0」と「PowerShell Core 6.2.1」の結果は誤差といったレベルだ。しかし、「PowerShell 7.0.0 Preview1」ではGroup-ObjectベンチとSort-Objectベンチの結果が逆に遅くなっている。

全体のパフォーマンスは向上している可能性も

以前取り上げたベンチマークと同じものを実行したわけだが、PowerShell 7では、.NET Coreのバージョンアップにより全体のパフォーマンス向上が謳われているのに対し、今回ベンチマーク対象としたのがミクロ的だったので、正しい検証とは言えないかもしれない。

プレビュー版だということもあるし、.NET Coreの関係でmacOSだけが遅いという可能性もある。全体として遅くなったのか速くなったのか、今回の結果だけだとよくわからない。

結局この手の比較は実際に実行してみないと、本当のところがわからない。自分で試してみるのはとても大切だ。今後月に1回ごとに提供されるPreview版のリリースを通じてパフォーマンスがどのように推移していくのか観察していくのもよいだろう。

参考資料

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

一覧はこちら

連載目次

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

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

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

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

関連リンク

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

会員登録(無料)

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

一覧はこちら

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

一覧はこちら

ページの先頭に戻る