Here is my profile example:
{
"nodes": [
{
"id": 1,
"callFrame": {
"functionName": "ROOT",
"scriptId": "0",
"url": "",
"lineNumber": 0,
"columnNumber": 0
},
"hitCount": 0,
"children": [
2,
8
]
},
{
"id": 2,
"callFrame": {
"functionName": "level-0",
"scriptId": "0",
"url": "",
"lineNumber": 0,
"columnNumber": 0
},
"hitCount": 0,
"children": [
3
]
},
{
"id": 3,
"callFrame": {
"functionName": "level-1",
"scriptId": "0",
"url": "",
"lineNumber": 0,
"columnNumber": 10
},
"hitCount": 0,
"children": [
4,
6
]
},
{
"id": 4,
"callFrame": {
"functionName": "level-2-1",
"scriptId": "0",
"url": "",
"lineNumber": 5,
"columnNumber": 10
},
"hitCount": 0,
"children": [
5
]
},
{
"id": 5,
"callFrame": {
"functionName": "level-3-1",
"scriptId": "0",
"url": "",
"lineNumber": 13,
"columnNumber": 10
},
"hitCount": 0,
"positionTicks": [],
"children": []
},
{
"id": 6,
"callFrame": {
"functionName": "level-2-2",
"scriptId": "0",
"url": "",
"lineNumber": 9,
"columnNumber": 10
},
"hitCount": 0,
"children": [
7
]
},
{
"id": 7,
"callFrame": {
"functionName": "level-3-2",
"scriptId": "0",
"url": "",
"lineNumber": 13,
"columnNumber": 10
},
"hitCount": 0,
"positionTicks": [],
"children": []
},
{
"id": 8,
"callFrame": {
"functionName": "level-0-2",
"scriptId": "level-0-2",
"url": "",
"lineNumber": 0,
"columnNumber": 0
},
"hitCount": 0,
"positionTicks": [],
"children": [9]
},
{
"id": 9,
"callFrame": {
"functionName": "level-1-2",
"scriptId": "level-1-2",
"url": "",
"lineNumber": 0,
"columnNumber": 0
},
"hitCount": 0,
"positionTicks": [],
"children": []
}
],
"startTime": 1,
"endTime": 40000,
"samples": [
2,
5,
6,
7,
7,
7,
8,
9
],
"timeDeltas": [
0,
5000,
4000,
1000,
500,
1000,
1000,
500
]
}
When i put it chrome devtools i understand all how all results generated except last item, how it's self-time is calculated
There is little info about profiler in docs https://chromedevtools.github.io/devtools-protocol/tot/Profiler/.
Maybe profile i'm experimenting with is not correct? I manually wrote it to understand how it works
Turns out just need to add root sample to the end. Usually profile contains it to measure duration of last function