piątek,
PowerShell: Wydajność komputera
W PowerShell można wykonać podstawowe testy wydajności komputera, chociaż nie są one tak zaawansowane, jak dedykowane oprogramowanie benchmarkowe. Możliwe jest uzyskanie podstawowych informacji o wydajności, co jest użyteczne do wykonywania szybkich testó∑ ad-hoc. Dla bardziej kompleksowej analizy wydajności zaleca się użycie specjalistycznego oprogramowania benchmarkowego.
Przykłady
Prezentowane możliwości są tylko przykładami i mogą być dostosowane do konkretnych potrzeb. PowerShell oferuje ogromną elastyczność, dzięki czemu można tworzyć bardziej złożone skrypty do testowania i monitorowania wydajności systemu.
Testowanie wydajności dysku
Jednym ze sposobów testowania wydajności dysku jest użycie komendy Measure-Command
, która mierzy czas potrzebny na wykonanie określonego zadania. Przykładowo, możesz zmierzyć czas potrzebny na zapisanie i odczytanie pliku z dysku:
# Mierzenie czasu zapisu pliku
$writeTest = Measure-Command {
1..100KB | Set-Content testfile.txt
}
# Mierzenie czasu odczytu pliku
$readTest = Measure-Command {
Get-Content testfile.txt
}
# Wyświetlenie wyników
"Time to write: $($writeTest.TotalMilliseconds) ms"
"Time to read: $($readTest.TotalMilliseconds) ms"
Testowanie wydajności procesora
Do testowania CPU można użyć pętli wykonującej intensywne obliczenia. Na przykład, obliczanie silni dużych liczb:
# Obliczanie silni dużej liczby
$cpuTest = Measure-Command {
$result = 1
for ($i = 1; $i -le 10000; $i++) {
$result *= $i
}
}
# Wyświetlenie czasu wykonania
"Time taken: $($cpuTest.TotalMilliseconds) ms"
Monitorowanie zasobów systemowych
Możesz również użyć PowerShell do monitorowania użycia zasobów systemowych, takich jak CPU, pamięć RAM, dysk, i sieć:
# Pobieranie i wyświetlenie informacji o użyciu CPU
Get-Counter 'Processor(_Total)% Processor Time'
# Pobieranie i wyświetlenie informacji o użyciu pamięci
Get-Counter 'MemoryAvailable MBytes'
Testowanie wydajności dysku twardego
$testFile = "testfile.tmp"
$fileSize = 1GB
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
$file = [io.file]::Create($testFile)
$file.SetLength($fileSize)
$file.Close()
$stopwatch.Stop()
Remove-Item $testFile
$speed = $fileSize / $stopwatch.Elapsed.TotalSeconds
"Szybkość zapisu: $($speed / 1MB) MB/s"
Pomiar wydajności CPU przez obliczenia
Measure-Command { 1..1000000 | % { [math]::Sqrt($_) } }
Monitorowanie wykorzystania pamięci RAM
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 -Property Name, @{Name='Memory'; Expression={($_.WorkingSet/1MB).ToString("F2") + " MB"}}
Sprawdzanie wydajności sieci
Test-NetConnection -ComputerName google.com -TraceRoute
Monitorowanie ogólnego wykorzystania zasobów systemowych
Get-Counter 'Processor(_Total)% Processor Time', 'MemoryAvailable MBytes', 'PhysicalDisk(_Total)Disk Bytes/sec'
Sprawdzanie czasu startu systemu
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Pomiar czasu uruchamiania aplikacji
Measure-Command { Start-Process notepad -Wait }