Closed Bug 1324941 Opened 8 years ago Closed 8 years ago

Markers for DOM event scripts

Categories

(Toolkit :: Performance Monitoring, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox53 --- fixed

People

(Reporter: Harald, Assigned: mstange)

References

Details

Attachments

(1 file)

I have checked but have not seen a way to add start/end markers with meta data. What is the recommended way to do that?
Flags: needinfo?(mstange)
We have "payload" markers for this use case - you implement a new subclass of ProfilerMarkerPayload (e.g. "DOMEventMarkerPayload"), and then you add such a marker by doing > PROFILER_MARKER_PAYLOAD("DOMEvent", > new DOMEventMarkerPayload(typeStr, phase, > startTime)); The ProfilerMarkerPayload base class has mStartTime and mEndTime fields. So apparently we should add just one marker for the whole interval instead of separate start + end markers. To be honest I'm no longer sure what makes "tracing" markers special / different from regular markers. During the process of researching this, I wrote a patch for this bug. I hope you don't mind that I've basically stolen this bug from you now :-) The patch should be useful for seeing how to convert the other types of markers. My patch also adds a PROFILER_LABEL so that you can see the event type in the call tree.
Flags: needinfo?(mstange)
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Comment on attachment 8820760 [details] Bug 1324941 - Add a profiler label and a profiler marker for DOMEvent dispatch. https://reviewboard.mozilla.org/r/100196/#review100736 Need to figure out something faster in this kind of very hot code paths. ::: dom/events/EventListenerManager.cpp:1259 (Diff revision 1) > - // Maybe add a marker to the docshell's timeline, but only > - // bother with all the logic if some docshell is recording. > + // Add a profiler label, a profiler marker, and possibly a docshell > + // timeline marker. The profiler marker is added at the end of this > + // scope. > + TimeStamp startTime = TimeStamp::Now(); > + nsAutoString typeStr; > + (*aDOMEvent)->GetType(typeStr); Do we really need to access the type as string in this hot code path? Definitely not when MOZ_ENABLE_PROFILER_SPS isn't set. Is MOZ_ENABLE_PROFILER_SPS set normally? ::: dom/events/EventListenerManager.cpp:1305 (Diff revision 1) > if (needsEndEventMarker) { > timelines->AddMarkerForDocShell( > docShell, "DOMEvent", MarkerTracingType::END); > } > + PROFILER_MARKER_PAYLOAD("DOMEvent", > + new DOMEventMarkerPayload(typeStr, phase, So we always do an allocation in this hot code path? Not acceptable.
Attachment #8820760 - Flags: review?(bugs) → review-
Blocks: 1325161
Comment on attachment 8820760 [details] Bug 1324941 - Add a profiler label and a profiler marker for DOMEvent dispatch. https://reviewboard.mozilla.org/r/100196/#review101000 ::: dom/events/EventListenerManager.cpp:1306 (Diff revision 2) > + > + rv = HandleEventSubType(listener, *aDOMEvent, aCurrentTarget); > + > + uint16_t phase; > + (*aDOMEvent)->GetEventPhase(&phase); > + PROFILER_MARKER_PAYLOAD("DOMEvent", So profiler code will then delete the created object, right? ::: tools/profiler/public/ProfilerMarkers.h:125 (Diff revision 2) > +class DOMEventMarkerPayload : public ProfilerMarkerPayload > +{ > +public: > + DOMEventMarkerPayload(const nsAString& aType, uint16_t aPhase, > + const mozilla::TimeStamp& aStartTime, > + const mozilla::TimeStamp& aEndTime = mozilla::TimeStamp::Now()); Why you need aEndTime when no one is ever using this param, but just falling back to the default value?
Attachment #8820760 - Flags: review?(bugs) → review+
Comment on attachment 8820760 [details] Bug 1324941 - Add a profiler label and a profiler marker for DOMEvent dispatch. https://reviewboard.mozilla.org/r/100196/#review101000 > So profiler code will then delete the created object, right? Yes > Why you need aEndTime when no one is ever using this param, but just falling back to the default value? You're right, this was a bit silly. I've removed the default value. I do want the end time to be a specifiable parameter though.
(In reply to Markus Stange [:mstange] from comment #7) > Comment on attachment 8820760 [details] > Bug 1324941 - Add a profiler label and a profiler marker for DOMEvent > dispatch. > > https://reviewboard.mozilla.org/r/100196/#review101000 > > > So profiler code will then delete the created object, right? > > Yes This happens at http://searchfox.org/mozilla-central/rev/ac40ca3ec39efe85bfb111274c10ee4ceea5bb7a/tools/profiler/core/platform.cpp#195 . And yes, there is way too much manual memory management in the profiler.
Pushed by mstange@themasta.com: https://hg.mozilla.org/integration/autoland/rev/77cbde755c30 Add a profiler label and a profiler marker for DOMEvent dispatch. r=smaug
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Depends on: 1326524
Depends on: 1352782
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: