Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Альтернативний спосіб отримання вмісту файлу.

Зазвичай для отримання вмісту текстових файлів в PowerShell використовується командлет Get-Content. Наприклад для того, щоб вивести файл file.txt на екран, треба виконати таку команду:

Get-Content C: \ Files \ file.txt

це найбільш поширений, але не єдиний спосіб. Отримати вміст файлу можна, просто задавши в якості імені змінної шлях до файлу.Наприклад така команда видасть той же результат, що і попередня:

$ {C: \ Files \ file.txt}

Звичайно завжди корисно дізнатися щось нове, але привів я цей спосіб зовсім не для загального розвитку. Справа в тому, що при його використанні читання файлу здійснюється набагато швидше, при цьому споживаючи менше ресурсів.Для наочності проведемо невеличкий експеримент - візьмемо файл і вважаємо його в змінну двома різними способами, при цьому заміривши час роботи і споживання пам'яті. Для вимірювання часу виконання команди використовуємо командлет Measure-Command.

Спочатку заміряємо вихідні дані.Розмір файлу складає 65Мб, споживання пам'яті процесом PowerShell в просте близько 66 Мб.



Потім вважаємо вміст файлу в змінну за допомогою Get-Content і виміряємо час роботи командою:

Measure-Command -Expression {$ a = Get-Content "C: \ Files \ file.txt"}

Команда відпрацювала за 5,5 секунд, споживання пам'яті склало 1079784Кб (≈1Гб).



Тепер виконаємо читання файлу альтернативним способом, командою:

Measure- Command -Expression {$ a = $ {C: \ files \ file.txt}}

В цьому випадку для роботи команди треба було всього 0,3 секунди і 233508Кб (≈233,5Мб) пам'яті.



Як бачите, у другому випадку швидкість роботи на порядок вище, а споживання пам'яті на порядок нижче.І чим розмір файлу більше, тим помітніше буде різниця в продуктивності, так що для читання файлів великого розміру другий спосіб краще.

У даного способу є деякі особливості. По-перше, шлях до файлу не повинен бути в лапках, навіть при наявності в ньому прогалин.А також в шляху до файлу можна використовувати групові символи або змінні. Наприклад можна написати так:

$ {C: \ files \ *. Txt}

або так:

$ {% systemdrive% \ files \ file. txt}

Тобто. цей спосіб не дозволяє вважати відразу кілька файлів, на відміну від Get-Content.

.