Skracanie czasu uruchamiania Narzędzi deweloperskich

Maksim Sadym
Maksim Sadym

Uruchamianie Narzędzi deweloperskich teraz trwa około 13% szybciej 🎉 (od 11,2 do 10 s)

TL;DR; wynik zostaje usunięty przez usunięcie nadmiarowej serializacji.

Przegląd

Podczas uruchamiania Narzędzia deweloperskie musi ono wywoływać silnik JavaScript V8.

Proces uruchamiania w Narzędziach deweloperskich

Mechanizm, którego Chromium używa do wysyłania poleceń Narzędzi deweloperskich do wersji 8 (i ogólnie w przypadku IPC), nosi nazwę mojo. Członkowie zespołu, Benedikt Meurer i Sigurd Schneider, odkryli nieskuteczność podczas pracy nad innym zadaniem, dlatego wpadli na pomysł usprawnienia tego procesu przez usunięcie 2 zbędnych etapów wysyłania i odbierania wiadomości.

Przyjrzyjmy się teraz, jak działa mechanizm mojo.

Mechanizmy mojo

Mechanizmy mojo

Istnieje polecenie mojo EvaluateScript, które uruchamia polecenie JS. Zserializuje całe polecenie JS, w tym znak arguments, do ciągu kodu źródłowego JavaScript, którym może być eval(). Jak łatwo się domyślić, ciągi te mogą być dość długie i drogie. Po otrzymaniu polecenia przez V8 te ciągi kodu JavaScript są deserializowane przed uruchomieniem. Ten proces serializacji i deserializacji każdej wiadomości wiąże się ze znacznym nakładem pracy.

Benedikt Meurer zauważył, że serializacja i deserializacja identyfikatora arguments są dość kosztowne, a całe kroki „Serialize JS Command to JS string” i „Deserialize JS string” (Serializacja ciągu znaków JS) są zbędne i można je pominąć.

Szczegóły techniczne: RenderFrameHostImpl::ExecuteJavaScript

Co ulepszyliśmy

Ulepszone mechanizmy

Wprowadziliśmy kolejną metodę interfejsu mojo API, która pozwala przekazywać bezpośrednio nazwę obiektu, metodę wywoływania oraz listę argumentów bez konieczności tworzenia ciągu kodu źródłowego JavaScript. Pozwala to pominąć serializację i deserializację oraz eliminuje konieczność analizowania kodu JavaScript.

Szczegółowe informacje techniczne na temat sposobu wdrożenia tej optymalizacji można znaleźć w tych dwóch poprawkach:

  1. CL 2431864: [devtools] zmniejszenie obciążenia związanego z wysyłaniem wiadomości w interfejsie
  2. CL 2442012: [devtools] Użyj narzędzia ExecuteJavaScriptMethod w Narzędziach deweloperskich

Wpływ

Aby zmierzyć skuteczność zmiany, przeprowadziliśmy testy porównujące wersje Chromium cb971089a058 i 4f213b39d581 (przed zmianą i po niej).

W przypadku obu zmian przeprowadziliśmy ten scenariusz 5 razy:

  1. Zarejestruj ślad za pomocą chrome://tracing
  2. Otwórz Narzędzia deweloperskie w Narzędziach deweloperskich
  3. Pobierz zarejestrowany log czasu CrRendererMain i porównaj wskaźniki dotyczące V8.

Wyniki tych eksperymentów pokazują, że dzięki optymalizacji Narzędzia deweloperskie otwierają się ok.13% szybciej (z 11,2 s do 10 s).

Najważniejsze informacje, czasy pracy procesora

Nazwa metody Brak optymalizacji (ms) Zoptymalizowane (ms) Różnice (ms) Przyspieszenie działania (%)
Łącznie 11 213,19 9953,99 -1259,20 12,65%
v8.run 499,67 3,61 -496,06 12,65%
V8.Execute 1654,87 1349,61 -305,25 3,07%
v8.callFunction 1171,84 1339,77 167,94 -1,69%
v8.compile 133,93 3,56 -130,37 1,31%

Czas ładowania procesora w Narzędziach deweloperskich (ms)

Tabela porównania wszystkich danych śledzenia

W rezultacie Narzędzia deweloperskie otwierają się i działają szybciej przy mniejszym wykorzystaniu procesora. 🎉

Pobierz kanały podglądu

Zastanów się, czy nie ustawić Chrome w wersji Canary, Dev lub beta jako domyślnej przeglądarki do programowania. Te kanały wersji testowej dają dostęp do najnowszych funkcji Narzędzi deweloperskich, umożliwiają testowanie najnowocześniejszych interfejsów API platformy internetowej i wykrywanie problemów w witrynie, zanim użytkownicy ją zobaczą.

Kontakt z zespołem ds. Narzędzi deweloperskich w Chrome

Skorzystaj z poniższych opcji, aby porozmawiać o nowych funkcjach i zmianach w poście lub o innych kwestiach związanych z Narzędziami deweloperskimi.

  • Prześlij nam sugestię lub opinię na crbug.com.
  • Aby zgłosić problem z Narzędziami deweloperskimi, kliknij Więcej opcji   Więcej   > Pomoc > Zgłoś problemy z Narzędziami deweloperskimi.
  • Opublikuj tweeta na stronie @ChromeDevTools.
  • Napisz komentarz pod filmem dotyczącym nowości w Narzędziach deweloperskich w Narzędziach deweloperskich w YouTube lub filmach w YouTube ze wskazówkami dotyczącymi Narzędzi deweloperskich.