Windows10 1903でELFバイナリの動作速度が向上した模様
先日ほぼすべてのマシンにリリースされたWindows10の最新のアップデート1903を適用したところ、WSL上で実行しているプログラムの処理速度が速くなったような気がします。
気のせいかとも思ったのですが、1903へアップデートする前のマシンもあったので、アップデート前後での処理時間を測定してみたところ、確かに高速化していました。
測定結果
圧縮対象ファイルA
time | 1809 | 1903 |
---|---|---|
real | 2.672 | 2.637 |
user | 7.047 | 6.984 |
sys | 0.422 | 0.391 |
※表中の数値単位は秒(以下同様)
⇒realで約1.3%の高速化、userは0.9%の高速化、sysは7.3%の高速化
圧縮対象ファイルB
time | 1809 | 1903 |
---|---|---|
real | 2.668 | 2.590 |
user | 7.000 | 6.938 |
sys | 0.453 | 0.484 |
⇒realで約2.9%の高速化、userは0.9%の高速化、sysは-6.8%と低速化
圧縮対象ファイルC
time | 1809 | 1903 |
---|---|---|
real | 2.754 | 2.614 |
user | 6.938 | 6.906 |
sys | 0.422 | 0.438 |
⇒realで約5.1%の高速化、userは0.5%の高速化、sysは-3.8%と低速化
平均
- 測定値の相加平均から算出した高速化率
- real
- 3.1%
- user
- 0.7%
- sys
- -1.2%
- 測定値の中央値から算出した高速化率
- real
- 2.2%
- user
- 0.9%
- sys
- -3.8%
まとめ
検証対象プログラムはleptonの1つだけ、検証対象データは3ファイルだけと、サンプル数は少ないですが、上記測定からは以下のことが言えます。
- 実所要時間(real)としては数%の高速化が果たされている
- userは僅少ながらも高速化している
- sysは少なからず遅くなる場合があるようだ(が、総所要時間に占めるsysの割合は小さいため実害はない)
(雑記)
投機的実行の脆弱性の緩和策のペナルティを低減する更新だとか、ファイルシステム回りも含めたWSLの大幅な強化が行われるWSL2だとか、関係しそうなWindowsの機能改善についての記事は見かけていたので、それらの影響かと思ったのですが、前者は1903より前に提供されていますし、後者は1903より後の未来の話のようです。
なお、以下のMicrosoft公式の情報を確認しても、該当するような内容は掲載されていません。というわけで、直接的に何が原因で高速化したのかは判りません。
Windows 10 Version 1903 の新機能 | Microsoft Docs
参考までに、上記で測定に使ったJPEG圧縮ツールのleptonはELF64バイナリです。
$ readelf -h /usr/bin/lepton ELF Header: Magic: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - GNU ABI Version: 0 Type: DYN (Shared object file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x6f80 Start of program headers: 64 (bytes into file) Start of section headers: 510576 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 10 Size of section headers: 64 (bytes) Number of section headers: 30 Section header string table index: 29
1903へのアップデート前後で、通常のWindows版バイナリ形式のプログラムのパフォーマンスが変化したという体感はありません。
以上。