Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are this gap mean in Chrome devtools profile flame chart

Here is my javascript code, it is pretty simple:

console.profile();
var count = 1000;
var fn1 = function () {
    for (var i = 0; i < count; i++) {
        console.log("THIS IS FN1");
    }
}

var fn2 = function () {
    for (var i = 0; i < count; i++) {
        console.log("THIS IS FN2");
    }
    fn1();
}

fn2();
console.profileEnd();

and this is my profile screenshot:

enter image description here

Why there are some gap in the image, just like my black rectangle marked?

What does this gap mean?

like image 475
hh54188 Avatar asked Dec 20 '22 20:12

hh54188


1 Answers

You see this non-uniform sequence of gaps between log calls on top of fn2 and fn1 because the profiler is sampling and gives you only statistical information. It will stop JS thread and capture current call stack roughly once per 1ms (100us in high res mode) and width of each bar is proportional to the number of consecutive samples where we've seen the same call stack.

The split of fn2 is a bug. Since we stop JS thread in random state it is not always possible to iterate JS call stack because e.g. top frame may be half-constructed. We do our best to determine current state of the VM and crawl call stack but sometimes our heuristics fail in which case we may end up capturing incomplete stack like in your case.

like image 54
Yury Semikhatsky Avatar answered Dec 28 '22 05:12

Yury Semikhatsky