Visual Studio COde Tag Archive

3 sposoby na pomiar czasu wykonania skryptów PowerShell

Przy pisaniu zapytań SQL sprawdzanie statystyk wykonania to sprawa podstawowa. Pomiar ilości odczytów, pomiar czasu procesora i rzecz kluczowa pomiar czasu wykonania.

Jest to ważne. Te same wyniki możemy otrzymać pisząc różne zapytania, które zostaną wykonanie mniej lub bardziej wydajnie. Nie inaczej jest w PowerShell, z jedną różnicą, że rzadko…

dbamy o pomiar?

Po co? Nie widzimy powodów aby to robić. Najważniejsze, że działa a po drugie czy coś trwa minutę, czy 5, jeszcze nie robi nikomu różnicy. W takim razie kiedy powinniśmy myśleć o pomiarze wykonania skryptów PowerShell?

Wykonuje się bardzooo długo

Jakiś czas temu otrzymałem wiadomość z pytaniem. Mam pętlę, która „wykonuje się bardzo długo i nie wiem dlaczego”. Właśnie w takich sytuacjach przydaje się pomiar, który może pomóc wychwycić miejsca problematyczne.

3 sposoby na pomiar czasu wykonania

Measure-Command

Natywne polecenie które umożliwi Ci łatwe użycie i szybki pomiar. Wystarczy, że owiniesz swój kod w blok skryptu {} który będzie wartością dla parametru Expression.

Uwaga, nasz skrypt się wykona w tle ale wyników jego działania nie zobaczymy na „ekranie”. To nie wada, tak to działa.

Wyliczanie różnic czasu

Czasochłonna metoda. Wymaga od nas, w wybranych miejscach skryptu zachowania do zmiennej daty. Następnie wyliczania różnicy w celu uzyskania rezultatu.

Lepiej wykorzystaj następny sposób.

System.Diagnostics.Stopwatch

Najlepszym według mnie sposobem na pomiar jest wykorzystanie klasy [Stopwatch] który swoim działaniem przypomina stoper. Na początku tworzysz instancję klasy [System.Diagnostics.Stopwatch] i uruchamiasz stoper metodą startNew(). Obiekt tej klasy ma własność Elapsed, której wartość rośnie do czasu wywołania metody Stop (lub Restart)

Jest to o tyle wygodne, że możesz śledzić czas, jaki upłyną pomiędzy fragmentami kodu, poprzez sprawdzanie własność Elapsed. Ułatwia to identyfikację czaochłonnych sekcji skryptu, które można próbować poprawiać.

PowerShell Pro Tools

W Visual Studio Code, którego używam zamiast PowerShell ISE dostępne jest rozszerzenie PowerShell Pro Tools, które ma pomagać między innymi w analizie wydajności skryptów.

Sam jeszcze się temu przyglądam i wspominam o tym jako ciekawostka. Zobacz, jak to mniej więcej działa.

Wygląda dobrze, niestety nie zawsze działa jak należy i ma swoją (niewysoką) cenę. Więcej o rozwiązaniu znajdziesz tutaj.

Podsumowanie

Pomiar czasu wykonania skryptów nie jest czymś, o czym myślimy w pierwszej kolejności. Jednak może się przydać np. przy wykonywaniu refaktoring kodu, do sprawdzenia efektów zmian.

W zależności od potrzeby sięgam po inne metody. Measure-Command, gdy potrzebuję porównać czasy wykonania dwóch poleceń lub instrukcji. Klasy Stopwatch, gdy chcę znaleźć miejsce w skrypcie, które może mieć potencjał do poprawy.

By

Read More

Używasz nadal PowerShell ISE? Przygotuj się na Visual Studio Code!!

Pomimo braku wielu możliwości PowerShell Integrated Scripting Environment (ISE) był podstawowym narzędziem do tworzenia i edycji skryptów PowerShell. W takiej formie jak go znamy pojawił się wraz z PowerShell 3.0 i oferował niezbędne minimum. Od tego czasu minęło kilka lat i jeśli nadal używasz ISE jako głównego edytora skryptów PowerShell to najwyższy czas poznać Visual Studio Code.

Dlaczego Visual Studio Code?

Bo jest na świetnym edytorem kodu a PowerShell ISE nie jest i nie będzie już rozwijany.

Jeśli to Cię nie przekonało to, pozwól, że wymienię kilka jego zalet. Visual Studio Code jest multiplatformowy, nie tylko Windows, ale również Linux lub MacOS. Do tego ogromne możliwości personalizacji, motywy, skróty klawiszowe, fragmenty kodu, zadania… Jeśli chcesz coś zmienić to prawdopodobnie możesz.

Do tego dostęp do sporej liczby rozszerzeń, dzięki którym Visual Studio Code szybko staje się nowym standardowym narzędziem dla PowerShell, ale rownież każdego innego wybranego języka.

Jeśli jeszcze go nie masz, wykonaj pierwszy krok…

Instalacja Visual Studio Code

Zacznij od pobrania Visual Studio Code dla własnej platformy i przejdź przez instalacje.

W systemie Windows, jeśli zgodziłeś się na dodanie ścieżki do Visual Studio Code do zmiennej systemowej Path możesz uruchamiać edytor przez wywołanie w konsoli polecenia code

Konfiguracja

Po instalacji dostajemy edytor kodu nieuzbrojony w obsługę PowerShell. Dlatego konieczna jest instalacja rozszerzenia PowerShell Language Support for Visual Studio Code.

W tym celu przejdź do File -> Preferences -> Extension wyszukaj PowerShell oraz kliknij install. Tyle.

Po instalacji rozszerzenia nasz Visual Studio Code (VSCode) jest gotowe do pisania pierwszych skryptów PowerShell. Jednak jeszcze chwilę poczekaj.

Rozważ dodanie rozszerzeń:

  • vscode-icons – dodaje zestaw ikon dla plików 
  • GitLens – poprawia integracje z Git dzięki czemu ułatwia śledzenie zmian – kto, co, kiedy
  • Task Runner – dodaje widok „Task Runner” z zadaniami w oknie eksploratora

Wersjonowanie kody

Jeśli wersjonujesz swoje skrypty (a wierze, że to robisz) i masz klienta Git, to możesz przejść dalej, jeśli nie to czas to zmienić.

Zainstaluj klienta Git i zaprzyjaźnij się z tym rozwiązaniem.

https://www.youtube.com/watch?v=D6EI7EbEN4Q

Personalizacja

Tak jak wyżej napisałem, jeśli chcesz coś w Visual Studio Code zmienić to prawdopodobnie możesz. Wszystkie ustawienia znajdziesz przechodząć do File -> Preferences -> Settings.

Znacznie szybciej zmiany wprowadzisz poprzez edycje pliku json. Poniżej przykład moich zmian w konsoli z których możesz skorzystać.

Podobnie dodasz swoje skróty klawiszowe, w tym celu przejdź do File -> Preferences -> Keyboard Shortcuts.

Motywy pozwalają modyfikować kolorystykę Visual Studio Code i ich wybór jest szeroki. Próbowałem kilku, ale zawsze wracam do Dark + (default dark) szczególnie przez pasujące mi kolorowanie składni.

Inne motywy, które próbowałem i wyglądają nieźle, to One Monokai, Material, Ayu One Dark Pro, Rainglow (Azure), Dracula.

Poszukaj i znajdź coś dla siebie.

Fragmenty kodu czyli snippety

W Visual Studio Code podobnie jak w PowerShell ISE mamy dostępne fragmenty kody do szybkiego wykorzystania. Snippety podpowiadane są podczas pisania lub po wywołaniu skrótu Ctrl+Space.

Co fajne w Visual Studio Code możesz dodawać globalne snippety oraz dedykowane dla wybranego folderu lub obszaru roboczego. Jak to zrobić? Odsyłam do dokumentacji.

Zadania

Zadanie, które często wykonujesz możesz zdefiniować w Visual Studio Code i sięgać po nie w bardzo szybki sposób. Zadania w przeciwieństwie do snippetów definiujemy dla konkretnego folderu.

Aby utworzyć plik json, gdzie zdefiniujesz swoje zadanie wybierz z górnego paska Terminal -> Configure Task... następnie Create tasks.json file from template i na końcu Other.

Jak wywołać to zadanie? Wybierz Terminal -> Run Task... i wprowadź zdefiniowaną wcześniej etykietę. Jeśli skorzystałeś z rozszerzenia Task Runner to wybierz poprostu z listy.

Stary, dobry profil dla Visual Studio Code

Dla PowerShell Integrated Console w Visual Studio Code identycznie jak dla konsoli lub ISE możesz zdefiniować swój profil PowerShell. W terminalu wywołaj code $profile, aby otworzyć nową kartę z pustym plikiem profilu. Możesz tam przenieś zawartość swojego starego profilu lub przygotować nowy.

Podsumowanie

Przyznam się, że długo przesiadałem się z PowerShell Integrated Scripting Environment do Visual Studio Code. Nadal zdarza mi się, że wracam do niego na chwilę. Jednak spore możliwości personalizacji oraz pomoc w pisaniu i formatowaniu kodu sprawiły, że Visual Studio Code zdecydowanie został moim pierwszym wyborem.

Dlatego niezrażaj się, tylko eksperymentuj i dostosuj Visual Studio Code pod siebie.

By

Read More

× Close