Andrzej P. Wozniak <uszer@poczta.onet.pl.invalid> napisał(a):
Jaki system, jaka wersja Powershell, jaki dysk?
[System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 17763 0
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 17763 316
Dysk nie ma znaczenia. System ma o tyle znaczenie, że na XP można mieć
maksymalnie PS 2.0.
Pod Windows XP, Powershell 1.0 (6.0.6002.18111),
To jest PowerShell 2.0.
dysk SATA III, wychodzi tempo jakieś 25 KiB/s, obciążenie jednego rdzenia
na 100%. Podejrzewam
brak (sensownego) buforowania operacji, podobnie jak to jest w
Notatniku (też w XP) przy wykonywaniu operacji „Zamień wszystkie”.
(ls .\c0cf9e91444e0cd6b19a918ac47decd3.mp3).Length / (Measure-Command {
.\Untitled1.ps1 .\c0cf9e91444e0cd6b19a918ac47decd3.mp3
out.mp3 }).Milliseconds
5044,5249343832
U mnie wychodzi więc 5 MB/s. Różnica bierze się stąd, że w PowerShellu 2.0
skrypty są interpretowane. Od wersji 3 drzewo abstract syntax tree
kompilowane jest do wyrażeń LINQ a następnie do bajtkodu. Dodatkowo pętla
kompilowana jest za pomocą JIT do kodu maszynowego. Stąd jest bardzo duża
różnica w szybkości między PS 2 a nowszymi.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
|