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.
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
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
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:
- CL 2431864: [devtools] zmniejszenie obciążenia związanego z wysyłaniem wiadomości w interfejsie
- 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:
- Zarejestruj ślad za pomocą
chrome://tracing
- Otwórz Narzędzia deweloperskie w Narzędziach deweloperskich
- 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% |
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 > 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.