Closed
Bug 597037
Opened 15 years ago
Closed 1 year ago
Beads.js clock example is JS-bound
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
INCOMPLETE
People
(Reporter: humph, Unassigned)
References
()
Details
(Keywords: perf)
Chris Morgan is porting a Java sound library (Beads) to js and the audio data API. He has a bunch of examples done already, like this clock. His audio code doesn't seem to JIT well (or at least bogs down badly if it is JIT'ing), and I know you guys are often looking for real-world web stuff that is js-bound. Looking at his code, I can already see ways to make this more traceable, and I'm helping him do that; however, if you don't know how to rewrite for trace (e.g., most of the web), this is bad.
Shark shows me this:
19.3% 19.3% XUL js::Interpret(...)
0.0% 19.0% XUL RunTracer(js::VMFrame&, js::mjit::ic::MICInfo&)
0.0% 0.0% XUL js::MonitorTracePoint(JSContext*, unsigned int&, bool&)
0.0% 0.0% Unknown Library 0x3dbb0c60 [unknown]
9.4% 9.4% XUL bool js::VisitFrameSlots<js::FlushNativeStackFrameVisitor>(js::FlushNativeStackFrameVisitor&, JSContext*, unsigned int, JSStackFrame*, JSStackFrame*)
6.2% 6.2% XUL bool js::VisitFrameSlots<js::CheckEntryTypeVisitor>(js::CheckEntryTypeVisitor&, JSContext*, unsigned int, JSStackFrame*, JSStackFrame*)
4.4% 4.4% XUL js::ExecuteTree(JSContext*, js::TreeFragment*, unsigned int&, js::VMSideExit**, js::VMSideExit**)
4.2% 4.2% XUL bool js::VisitFrameSlots<js::BuildNativeFrameVisitor>(js::BuildNativeFrameVisitor&, JSContext*, unsigned int, JSStackFrame*, JSStackFrame*)
4.2% 4.2% XUL js::LeaveTree(js::TraceMonitor*, js::TracerState&, js::VMSideExit*)
2.9% 2.9% XUL js::CheckGlobalObjectShape(JSContext*, js::TraceMonitor*, JSObject*, unsigned int*, js::Queue<unsigned short>**)
2.6% 2.6% XUL TypedArrayTemplate<float>::obj_getProperty(JSContext*, JSObject*, int, js::Value*)
2.5% 2.5% XUL js::MonitorLoopEdge(JSContext*, unsigned int&)
1.9% 1.9% XUL js::CheckEntryTypes(JSContext*, JSObject*, js::TreeFragment*)
Comment 1•15 years ago
|
||
Yeah, looks like we're spending about: 20% in (not under) js::Interpret 30% in tracejit-generated code. 10% under LeaveTree, about half of it visiting frame slots. 7% under CheckEntryTypes. 9% under JaegerShot called from that js::Interpret, mostly in jit-generated stuff and stubs::GetElem. on float-typed arrays. 5% SlowCallFromIC doing a js::Invoke which does various stuff. If I turn off content tracing, I still get slowness (though _maybe_ a bit less); now I get: 46% in methodjit-generated code 12% under stubs::GetElem on a float-typed array 8% under SlowCallFromIC 8% under stubs::SetElem on a float-typed array 6% under stubs::GetProp (mostly InlineGetProp self time and the propcache fullTest). 4% under stubs::CallProp (self time and fullTest) 3% under stubs::Mod (self and fmod) 2% under stubs::ArgCnt, calling js_GetArgsProperty 2% under js_math_floorand some minor stuff.
Comment 2•15 years ago
|
||
Let's try this again:
20% in (not under) js::Interpret
30% in tracejit-generated code.
10% under LeaveTree, about half of it visiting frame slots.
7% under CheckEntryTypes.
9% under JaegerShot called from that js::Interpret, mostly in jit-generated
stuff and stubs::GetElem on float-typed arrays.
5% SlowCallFromIC doing a js::Invoke which does various stuff.
If I turn off content tracing, I still get slowness (though _maybe_ a
bit less); now I get:
46% in methodjit-generated code
12% under stubs::GetElem on a float-typed array
8% under SlowCallFromIC
8% under stubs::SetElem on a float-typed array
6% under stubs::GetProp (mostly InlineGetProp self time and the propcache
fullTest).
4% under stubs::CallProp (self time and fullTest)
3% under stubs::Mod (self and fmod)
2% under stubs::ArgCnt, calling js_GetArgsProperty
2% under js_math_floor
and some minor stuff.
| Reporter | ||
Comment 3•15 years ago
|
||
Chris put a version of the demo up that won't change:
http://beadsjs.chrismorgan.info/bugzilla-clock.html
| Assignee | ||
Updated•11 years ago
|
Assignee: general → nobody
Updated•3 years ago
|
Severity: normal → S3
Comment 4•1 year ago
|
||
Demo does not work in Nightly and Chrome.
Closing as incomplete.
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•