Toon posts:

Javascript Profilers

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben op zoek naar een goede javascript profiler. Nu zou je zeggen "Venkman", en op zich bevat hij leuke profiling functies maar ze liggen op een te hoog niveau:

Venkman output puur dit bijvoorbeeld:

Function Name: cancelEventBubbling (Lines 180 - 189)
Total Calls: 23 (max recurse 0)
Total Time: 0 (min/max/avg 0/0/0)

Function Name: [remove] (Lines 353 - 413)
Total Calls: 1 (max recurse 0)
Total Time: 0 (min/max/avg 0/0/0)

Function Name: [append] (Lines 63 - 66)
Total Calls: 1 (max recurse 0)
Total Time: 0 (min/max/avg 0/0/0)

Function Name: [unselect] (Lines 435 - 441)
Total Calls: 2 (max recurse 0)
Total Time: 0 (min/max/avg 0/0/0)

Function Name: [getPreviousSibling] (Lines 448 - 450)
Total Calls: 31 (max recurse 0)
Total Time: 0 (min/max/avg 0/0/0)


Maar eigenlijk wil ik meer specifieker execution traces zien, zoals per {} block zodat je ook echt kunt zien waar functies sneller kunnen, op welk punt ze sneller kunnen. Hebben mensen ervaringen met andere profiling tools voor Javascript?

Verwijderd

Hoewel ze op die pagina zelf Venkman aanraden, heb je er misschien toch iets aan, volgens mij doet dit wel wat je nodig hebt.

Misschien kan je ook die gast die venkman heeft gemaakt proberen te overtuigen om dingen mogelijk te maken die jou handig lijken.

http://www.mozilla.org/performance/jsprofiler.html

Verwijderd

Topicstarter
Volgens de documentatie niet, en zoals het daar staat ook niet :)

The first line specifies the js file from which times were gathered. Each line below that is of the format:
[A, B] C {D-E} F {G, H, I}

where:
A -> The function compile count
B -> The function call count
C -> The function name
D -> Base line number of the function in the JS file
E -> Extent (last) line number of the function in the JS file
F -> total size (net of malloc overhead) of JS function data structures
G -> minimum time of execution in milliseconds
H -> maximum time of execution, in milliseconds
I -> average execution time of function, in milliseconds

[#compiles, #calls] function {lines in file} {Tmin, Tmax, Tavg}


Kortom echt op een hoog niveau, de function.

function mijnfunctie(){
var i = 10;while(i--){
voerfunctieuit(i);
}
var tmp = document.getElementById('test');
var i = tmp.getElementsByTagName('A').length;while(i--){
voerfunctieuit(tmp.getElementsByTagName('A')[i]);
}
}

Maar er is geen manier met Venkman, om deze functie dieper uit te spitten op performance, zodat je de beide loops kunt profilen.

Verwijderd

Heb blijkbaar weer eens met m'n neus zitten kijken, sorry :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:15

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op dinsdag 15 februari 2005 @ 20:01:
Maar eigenlijk wil ik meer specifieker execution traces zien, zoals per {} block zodat je ook echt kunt zien waar functies sneller kunnen, op welk punt ze sneller kunnen. Hebben mensen ervaringen met andere profiling tools voor Javascript?
Niet zozeer profilers voor javascript, maar wel voor eigen geschreven profilers die in principe in elke taal te implementeren zijn. Goed, je zult de belangrijke dingen wel moeten omheinen met functioncalls, maar het is in principe vrij straightforward. Als je een blok ingaat roep je een enter() functie op je profiler aan, die dan de huidige tijd registreert en je blok op een stack pusht. Als je vervolgens weer je blok uit gaat roep je een exit() functie aan die wederom de tijd registreert, zodat je precies weet hoe lang er over dat blok is gedaan. Als je die enter() en exit() met unieke identifiers doet kun je nog wat extra dingen bijhouden, zoals bijvoorbeeld het aantal calls. Daarnaast is het bijhouden van 2 tijden ook wel handig, één voor de totale tijd van begin tot eind van een blok (vergeet niet de tijd gespendeerd in de profiler zelf er vanaf te trekken), en één die de tijd voorstelt dat de code specifiek in dat blok zit (en dus niet een blok in dat blok, bijvoorbeeld wanneer je een function call doet die ook geprofiled wordt).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.