This might be lazy source positions forcing a reparse, have you tried running with --no-enable-lazy-source-positions?
On Tue, Oct 6, 2020 at 3:23 AM Gunes Acar <[email protected]> wrote: > The missing screenshot of the trace can be seen at: Github: > https://gist.github.com/gunesacar/b8f82266e93fbfda2bf06c573af3caea#gistcomment-3478635 > > On Tuesday, October 6, 2020 at 3:15:53 AM UTC+2 Gunes Acar wrote: > >> Hi all, >> >> For an academic research project, we use Chrome Devtools Protocol to set >> breakpoints at function returns, and collect function call metadata (stack >> frames, arguments, timestamps) using a condition script(*). >> >> Although the condition script always returns `false` to avoid pausing the >> debugger, we still observe a significant overhead per "hit" breakpoint. >> >> To identify the root cause, we set up tracing and found that >> *V8.ParseProgram* is called for each "hit" breakpoint. We then logged >> function events using "*--js-flags=--log-function-events*", which showed >> that all functions in the debugged script is *fully parsed* (i.e., >> `function,full-parse,...` event) for each "hit" breakpoint. >> >> >> For example, assume the debugged script contains 10K function >> definitions, of which only a 100 is called. We observe ~10K*100=~1M >> function (full-)parse events in the logs, which slows down the process and >> makes it unfeasible on heavy websites. >> >> 1) Is it possible to prevent repeated parsing of the debugged script for >> each evaluated breakpoint? >> >> 2) Could there be an easier and faster way of logging all function calls >> with the associated stack frames and arguments? Pointers to the relevant >> code locations would be much appreciated if modifying Chrome/V8 source code >> is the only way to do that. >> The trace and test files can be found in this Gist >> <https://gist.github.com/gunesacar/b8f82266e93fbfda2bf06c573af3caea#file-trace-json> >> . >> >> Thanks so much and stay safe, >> Gunes >> >> PS: None of our breakpoints were actually hit, since the condition script >> always returns false. Also, the debugged scripts were not modified during >> the execution through `Debugger.setScriptSource` or by any other means >> >> *: Idea from the DuckDuckGo’s Tracker Radar Collector >> <https://github.com/duckduckgo/tracker-radar-collector/blob/98fa0f5a00016a2d10a43d86e16b38601f7ee387/collectors/APICalls/TrackerTracker.js#L76> >> >> >> -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/v8-dev/f3242ed8-a082-4b68-868b-1a18f9d98323n%40googlegroups.com > <https://groups.google.com/d/msgid/v8-dev/f3242ed8-a082-4b68-868b-1a18f9d98323n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/CAGRskv8nby_co6K6%2Bxcyq-WKVvq4_SodGCczQAH_Wg_oTJ%2BBEg%40mail.gmail.com.
