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

Я пытаюсь оптимизировать производительность приложения 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?

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


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


Ответы (1)


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

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

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

person TylerY86    schedule 29.09.2016