We examined how the performance changes depending on the implementation.
Survey target
Just displaying a circular gauge when creating a digital watch turned out to be quite time-consuming. Two points were examined to see how the arc display of the gauge display and the parameters at the time of text drawing changed.
Drawing an arc
Drawing using drawArc
Draws a semicircle in the upper half, centered on the center of the screen.
function useDrawArc(dc) {
dc.drawArc(center[0], center[1], center[0] - 3,
Graphics.ARC_COUNTER_CLOCKWISE,
0.0, 180.0);
}
Draw using drawLine
With the same specifications as drawArc, vertices are calculated by sin / cos and line segments are drawn.
Line vertices were calculated in units of 1, 2, 3, 4, 10, 12, and 20 degrees.
var radius = center[0] - 3;
var prev = [center[0] + radius, center[1]];
var baseAngle = Math.PI / 180.0;
for (var i = 1; i < 180; i++) {
var angle = baseAngle * i;
var now = [center[0] + radius * Math.cos(angle), center[1] - radius * Math.sin(angle)];
dc.drawLine(prev[0], prev[1], now[0], now[1]);
prev = now;
}
dc.drawLine(prev[0], prev[1], 3, center[1]);
Drawing with drawText
drawArc / drawLine draws the same shape, but this time draws text 88:88 in the center of the screen.
function useDrawText(dc) {
dc.drawText(center[0], center[1], Graphics.FONT_NUMBER_THAI_HOT, "88:88", Graphics.TEXT_JUSTIFY_CENTER);
}
I changed the font name and justification, and measured the execution time.
Measurement result
Drawing an arc
The results of drawArc and drawLine show the code time, graphic time, total time, and the contents of the drawing at that time. By the way, all display times are 54080, so they are not shown in the table.
Processing content |
Code | Graphics | Total | Drawing result |
drawArc | 543 | 184796 | 239416 | |
drawLine(1deg) | 81318 | 1912 | 137310 | |
drawLine(2deg) | 41187 | 1956 | 97223 | |
drawLine(3deg) | 27800 | 1983 | 83863 | |
drawLine(4deg) | 21050 | 1995 | 77125 | |
drawLine(10deg) | 8900 | 2006 | 64986 | |
drawLine(12deg) | 7550 | 2006 | 63636 | |
drawLine(20deg) | 4850 | 2008 | 60938 |
drawArc has an overwhelmingly long graphic time. When drawLine is used, the processing time tends to increase as the number of divisions increases. For the time being, if the division unit is about 12 degrees, the shape with the actual arc is about 1 dot, so that may be the permissible range in use.
Drawing text
Font name | justification | Code | Graphcis | Total |
LARGE | CENTER | 612 | 4451 | 59143 |
LARGE | CENTER|VCENTER | 643 | 4451 | 59174 |
MEDIUM | CENTER | 612 | 3727 | 58419 |
SMALL | CENTER | 612 | 3007 | 57699 |
THAI_HOT | CENTER | 612 | 21684 |
76376 |
Regarding “justification”, the code processing time for LEFT / RIGHT was the same as that for CENTER, so it is not shown in the table. Did the OR combination with VCENTER slightly increase the processing time due to OR processing?
As for graphics, the processing time seems to have increased due to the large fonts and the increased actual drawing area. (Is it proportional to the drawing area?)
コメント