зеркало из https://github.com/mozilla/gecko-dev.git
Bug 717698. Add about:jank infrastructure. r=ehsan
Adds a profiling mode that only records samples when we haven't spun the event loop
This commit is contained in:
Родитель
9b494f57e9
Коммит
dba7c91301
|
@ -245,6 +245,7 @@ class TableTicker: public Sampler {
|
|||
{
|
||||
mUseStackWalk = hasFeature(aFeatures, aFeatureCount, "stackwalk");
|
||||
mProfile.addTag(ProfileEntry('m', "Start"));
|
||||
mJankOnly = hasFeature(aFeatures, aFeatureCount, "jank");
|
||||
}
|
||||
|
||||
~TableTicker() { if (IsActive()) Stop(); }
|
||||
|
@ -276,6 +277,7 @@ class TableTicker: public Sampler {
|
|||
Stack *mStack;
|
||||
bool mSaveRequested;
|
||||
bool mUseStackWalk;
|
||||
bool mJankOnly;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -380,6 +382,19 @@ void TableTicker::Tick(TickSample* sample)
|
|||
}
|
||||
mStack->mQueueClearMarker = true;
|
||||
|
||||
bool recordSample = true;
|
||||
if (mJankOnly) {
|
||||
recordSample = false;
|
||||
// only record the events when we have a we haven't seen a tracer event for 100ms
|
||||
if (!sLastTracerEvent.IsNull()) {
|
||||
TimeDuration delta = sample->timestamp - sLastTracerEvent;
|
||||
if (delta.ToMilliseconds() > 100.0) {
|
||||
recordSample = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (recordSample) {
|
||||
#ifdef USE_BACKTRACE
|
||||
if (mUseStackWalk) {
|
||||
doBacktrace(mProfile);
|
||||
|
@ -389,8 +404,9 @@ void TableTicker::Tick(TickSample* sample)
|
|||
#else
|
||||
doSampleStackTrace(mStack, mProfile, sample);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!sLastTracerEvent.IsNull() && sample) {
|
||||
if (!mJankOnly && !sLastTracerEvent.IsNull() && sample) {
|
||||
TimeDuration delta = sample->timestamp - sLastTracerEvent;
|
||||
mProfile.addTag(ProfileEntry('r', delta.ToMilliseconds()));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче