Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Найти соответствующий источник кода JS, который не оптимизирован V8

Автор вопроса: m.s.Ответов: 1

Я пытаюсь оптимизировать производительность приложения node.js и поэтому анализирую поведение JIT-компилятора V8.

При запуске приложения через node --trace_deopt --trace_opt --code_comments --print_optcode ... выходные данные содержат много повторяющихся строк, таких как следующие:

[didn't find optimized code in optimized code map for 0x490a8b4aa69 <SharedFunctionInfo>]

Как узнать, какой код JavaScript соответствует 0x490a8b4aa69?

Полный вывод доступен здесь.

  • Всегда называйте свои функции :-) Bergi 19.09.2016
  • @Bergi, какой-нибудь реальный совет? :) m.s. 20.09.2016
  • На какой версии v8 (или Node.js) это было? Это сообщение об ошибке раньше было примерно в строке 10200 v8/src/objects.cc, но его больше нет. По сути, это означает, что в настоящий момент оптимизация для конкретной трассировки не применялась. Возможно, потому, что он не использовался или использовался достаточно редко. Вероятно, это была библиотечная функция Node.js. Предоставленный адрес находится в памяти. Вам нужно будет подключить отладчик к v8 и загрузить символ для SharedFunctionInfo в этом месте. Возможно, точка останова и на строке, которая выдает сообщение. TylerY86 27.09.2016
  • Я могу преобразовать это в ответ, если получу более подробную информацию о версии v8, которую вы используете. TylerY86 27.09.2016
  • @ TylerY86 это была версия узла 4.5; Вы знаете, почему это сообщение пропало? есть ли в более новых версиях v8 какие-либо другие признаки того, что функция НЕ была оптимизирована? m.s. 28.09.2016
  • Эх, я не думаю, что полезно знать, что было не оптимизировано, так как есть много вещей, которые не оптимизируются... просто возьмите вывод от trace_opt и предположите все остальное нет. Это был как бы намек на то, что была проведена проверка оптимизированного кода, а времени на это не было. Попробовать --trace_codegen и работать в обратном порядке? Это выглядит очень трудоемкой вещью для исследования. TylerY86 28.09.2016

javascriptperformancejitv8

Ответы

Ответ 1 · рейтинг 2 · TylerY86

Это сообщение об ошибке раньше было примерно в строке 10200 v8/src/objects.cc, но его больше нет. В основном это означает, что в настоящее время оптимизация для конкретной трассы не применялась. Возможно, потому, что он не использовался или использовался достаточно редко. Вероятно, это была библиотечная функция Node.js. Предоставленный адрес находится в памяти. Вам нужно было бы подключить отладчик к v8 и загрузить символ для SharedFunctionInfo в этом месте. Возможно, точка останова и на строке, которая выдает сообщение.

Я не думаю, что полезно знать, что не было оптимизировано, так как есть много вещей, которые не оптимизируются... просто возьмите вывод из --trace_opt и предположите, что все остальное не оптимизировано. Это был как бы намек на то, что была проведена проверка оптимизированного кода, а времени на это не было. Может быть, попробовать --trace_codegen и работать в обратном порядке.

На это уходит очень много времени.
Торстен Лоренц был бы парнем, чтобы спросить об этом.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы