Opened 10 years ago

Closed 9 years ago

#2693 closed enhancement (fixed)

Improved Profiling with IonMonkey Debug Internals

Reported by: agentx Owned by:
Priority: Should Have Milestone: Alpha 18
Component: UI & Simulation Keywords:
Cc: Yves Patch:

Description

Probably the most interesting information about a hot JS function is whether IonMonkey manages to compile the function or bails out. The speed difference between native and interpreted byte code may yield magnitudes.

According to Mozilla delivers IonMonkey Spew this and more information.

Plus there is a tool to visualize the results.

PS: The Jit Inspector add-on works similar, but for FireFox.

Change History (7)

comment:1 by leper, 10 years ago

Milestone: Alpha 17Alpha 18

comment:2 by agentx, 10 years ago

Nice to read there is a plan to implement the enhancement in Alpha 18. Very much appreciated.

comment:3 by Yves, 10 years ago

What's the task in this ticket? You can already use Ion Spew to show bailouts, you just need a debug build (I'd have to check which flag exactly enables it, but it should work if you don't use the system provided library and run a debug build). I've also created such code graphs that show the MIR graphs and everyone could do it according to the guide you linked.

The TraceLogger is probably more useful for performance profiling of our code and for seeing if there are problems with code not being Ion compiled. This tool can also be used in v24, but there's a newer and much improved version in v31.

The only TODO I see here is documenting the available tools in our wiki. I wanted to do that after v31 is in. Otherwise I don't see any tasks because these tools are already available and can be used.

comment:4 by Yves, 10 years ago

Cc: Yves added

comment:5 by agentx, 10 years ago

What's the task in this ticket?

Ok, here is the deal: I think, I've seen all JS code in 0AD by now and there are some strong candidates for heavy tuning. However, without before and after timing data tuning makes no sense. I can't put all code into a browser like usually, so I need a little help to get this data on the function level.

If you think I probably exaggerate, well, then you can't no longer blame JS on performance issues :)

In case I'm right, then you'll get a list where milliseconds have been squeezed out and you know where is room for more features.

in reply to:  5 comment:6 by Yves, 10 years ago

Replying to agentx:

What's the task in this ticket?

Ok, here is the deal: I think, I've seen all JS code in 0AD by now and there are some strong candidates for heavy tuning. However, without before and after timing data tuning makes no sense. I can't put all code into a browser like usually, so I need a little help to get this data on the function level.

You can do that with the tracelogger. Check the link in my previous answer and if you have difficulties setting it up, I can help on IRC. What I meant is that I don't see where this needs more work because we already have it and will get the newest version when V31 is ready.

comment:7 by Stan, 9 years ago

Keywords: SpiderMonkey Profiling removed
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.