2016-09-19 49 views
5

我尝试优化node.js应用程序的性能,因此我正在分析V8的JIT编译器的行为。找到相应的未经V8优化的JS代码源

当通过node --trace_deopt --trace_opt --code_comments --print_optcode ...运行的应用程序,输出包含许多重复的行类似如下:

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

我如何可以找出哪些JavaScript代码对应0x490a8b4aa69

全部输出可用here

+0

总是命名你的功能:-) – Bergi

+1

@Bergi任何现实世界的建议? :) –

+0

什么版本的V8(或Node.js)是这样的?该错误消息曾经是'v8/src/objects.cc'的第10200行,但没有更多。 *这基本上意味着目前没有针对特定跟踪进行优化。可能是因为它没有使用,或者很少使用。它可能是一个Node.js库函数。提供的地址在内存中。您必须将调试器附加到v8,并在该位置加载SharedFunctionInfo的符号。 * – TylerY86

回答

2

该错误消息曾用于的10200行,但没有更多。这基本上意味着目前没有针对特定跟踪采用优化。可能是因为它没有使用,或者很少使用。它可能是一个Node.js库函数。提供的地址在内存中。您必须将调试器附加到v8,并在该位置加载SharedFunctionInfo的符号。也可能产生信息的线上的断点。

我不认为这是有用的知道什么是没有优化,因为有很多事情没有得到优化...只是从--trace_opt输出,并假设其他一切都不是。这只是一个暗示,检查是为了优化代码而进行的,没有时间。也许试试--trace_codegen并向后工作。

这看起来是一个非常耗时的研究。
Thorsten Lorenz这个家伙问这个问题。