72 if (fCurrentMeasurement >= 0) {
74 fCumulativeMeasurementTime += fTotalTimes[fCurrentMeasurement];
75 fCumulativeMeasurementCount++;
77 fCurrentMeasurement = (fCurrentMeasurement + 1) & (kMeasurementCount - 1);
78 SkASSERT(fCurrentMeasurement >= 0 && fCurrentMeasurement < kMeasurementCount);
83 int nextMeasurement = (fCurrentMeasurement + 1) & (kMeasurementCount - 1);
84 for (
int i = 0; i < fTimers.
size(); ++i) {
85 fTimers[i].fTimes[nextMeasurement] = 0;
88#ifdef SK_BUILD_FOR_ANDROID
96 static const float kPixelPerMS = 2.0f;
97 static const int kDisplayWidth = 192;
98 static const int kGraphHeight = 100;
100 static const int kDisplayHeight = kGraphHeight +
kTextHeight;
101 static const int kDisplayPadding = 10;
102 static const int kGraphPadding = 3;
103 static const SkScalar kBaseMS = 1000.f / 60.f;
105 auto canvas =
surface->getCanvas();
106 SkISize canvasSize = canvas->getBaseLayerSize();
121 canvas->drawRect(rect,
paint);
124 canvas->drawLine(rect.fLeft, rect.fBottom - kBaseMS*kPixelPerMS,
125 rect.fRight, rect.fBottom - kBaseMS*kPixelPerMS,
paint);
128 canvas->drawRect(rect,
paint);
133 int i = nextMeasurement;
136 memset(sumTimes.
begin(), 0, sumTimes.
size() *
sizeof(
double));
138 double totalTime = 0;
143 for (
int timer = 0; timer < fTimers.
size(); ++timer) {
144 int height = (
int)(fTimers[timer].fTimes[i] * kPixelPerMS + 0.5);
146 paint.setColor(fTimers[timer].fColor);
150 inc += fTimers[timer].fTimes[i];
151 sumTimes[timer] += fTimers[timer].fTimes[i];
154 int height = (
int)(fTotalTimes[i] * kPixelPerMS + 0.5);
160 totalTime += fTotalTimes[i];
161 if (fTotalTimes[i] > 0) {
170 i &= (kMeasurementCount - 1);
172 }
while (i != nextMeasurement);
176 double time = totalTime / std::max(1, totalCount);
177 double measure = fCumulativeMeasurementTime / std::max(1, fCumulativeMeasurementCount);
178 canvas->drawString(
SkStringPrintf(
"%4.3f ms -> %4.3f ms", time, measure),
179 rect.fLeft + 3, rect.fTop + 14, font,
paint);
181 for (
int timer = 0; timer < fTimers.
size(); ++timer) {
182 paint.setColor(fTimers[timer].fLabelColor);
183 canvas->drawString(
SkStringPrintf(
"%s: %4.3f ms", fTimers[timer].fLabel.c_str(),
184 sumTimes[timer] / std::max(1,
count)),
185 rect.fLeft + 3, rect.fTop + 28 + (14 * timer), font,
paint);