Skip to content

Commit 7a9cfa1

Browse files
ShowFonts: log timing
1 parent 309f69e commit 7a9cfa1

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

  • internal_filesystem/apps/com.micropythonos.showfonts/assets

internal_filesystem/apps/com.micropythonos.showfonts/assets/showfonts.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,52 @@
11
from mpos import Activity
22
import lvgl as lv
3+
import time
34

45
from mpos import FontManager
56

67

78
class ShowFonts(Activity):
9+
def _now_ms(self):
10+
if hasattr(time, "ticks_ms"):
11+
return time.ticks_ms()
12+
return int(time.time() * 1000)
13+
14+
def _elapsed_ms(self, start_ms):
15+
if hasattr(time, "ticks_diff"):
16+
return time.ticks_diff(self._now_ms(), start_ms)
17+
return self._now_ms() - start_ms
18+
19+
def _log_timing(self, label, start_ms):
20+
print("[showfonts][timing] {}: {} ms".format(label, self._elapsed_ms(start_ms)))
21+
822
def onCreate(self):
923
screen = lv.obj()
1024
screen.set_flex_flow(lv.FLEX_FLOW.COLUMN)
1125

1226
self.setContentView(screen)
1327

1428
def onResume(self, screen):
29+
resume_start = self._now_ms()
1530
self.addAllFontsTitles(screen)
31+
self._log_timing("addAllFontsTitles", resume_start)
32+
33+
glyphs_start = self._now_ms()
1634
self.addAllGlyphs(screen)
35+
self._log_timing("addAllGlyphs", glyphs_start)
36+
self._log_timing("onResume total", resume_start)
1737
#lv.log_register_print_cb(ShowFonts.log_callback) # Show FPS to demonstrate that emoji fonts are 3-4x slower
1838

1939
def onPause(self, screen): # Activity goes background
2040
#lv.log_register_print_cb(None)
2141
pass
2242

2343
def addAllFontsTitles(self, screen):
44+
section_start = self._now_ms()
2445
import os
46+
ttf_start = self._now_ms()
2547
mydir = os.path.dirname(os.path.abspath(__file__))
2648
self._ttf_font = FontManager.getFont(size=42, ttf=f"M:{mydir}/Rancourt-SmallCaps.ttf")
49+
self._log_timing("addAllFontsTitles/getFont TTF", ttf_start)
2750
#self._ttf_font56 = FontManager.getFont(size=56, ttf=f"M:{mydir}/Rancourt-SmallCaps.ttf")
2851
#self._ttf_font72 = FontManager.getFont(size=72, ttf=f"M:{mydir}/Rancourt-SmallCaps.ttf")
2952
#fonts.append((self._ttf_font56, "TTF Rancourt 56"))
@@ -34,7 +57,11 @@ def addAllFontsTitles(self, screen):
3457
title.set_style_text_font(self._ttf_font, lv.PART.MAIN)
3558
title.set_text("Rancourt 42 TTF test with minimal glyphs")
3659

60+
listfonts_start = self._now_ms()
3761
fonts = FontManager.listFonts()
62+
self._log_timing("addAllFontsTitles/listFonts", listfonts_start)
63+
64+
render_start = self._now_ms()
3865
for font_info in fonts:
3966
if isinstance(font_info, tuple):
4067
font = font_info[0]
@@ -63,13 +90,18 @@ def addAllFontsTitles(self, screen):
6390
supported_latin,
6491
)
6592
)
93+
self._log_timing("addAllFontsTitles/render labels", render_start)
94+
self._log_timing("addAllFontsTitles total", section_start)
6695

6796

6897
def addAllGlyphs(self, screen, emoji=True):
98+
section_start = self._now_ms()
6999
dsc = lv.font_glyph_dsc_t()
70100

101+
getfont_start = self._now_ms()
71102
display_font = FontManager.getFont(size=16, family="Montserrat", emoji=emoji)
72103
lookup_font = display_font
104+
self._log_timing("addAllGlyphs/getFont", getfont_start)
73105
name = "Montserrat 16"
74106

75107
title = lv.label(screen)
@@ -84,21 +116,28 @@ def addAllGlyphs(self, screen, emoji=True):
84116
lbl.set_width(lv.pct(99))
85117
lbl.set_style_text_font(display_font, lv.PART.MAIN)
86118
alltext = ""
119+
scan_start = self._now_ms()
87120
for cp in range(0x20, 0xF800):
88121
if lookup_font.get_glyph_dsc(lookup_font, dsc, cp, cp):
89122
alltext = alltext + chr(cp) + " "
90123

91124
x += 20
92125
if x + 20 > screen.get_width():
93126
x = 4
127+
self._log_timing("addAllGlyphs/base glyph scan", scan_start)
94128

95129
if emoji:
130+
emoji_start = self._now_ms()
96131
emoji_cps = FontManager.getEmojiCodepoints()
97132
for cp in emoji_cps:
98133
alltext = alltext + chr(cp) + " "
134+
self._log_timing("addAllGlyphs/emoji append", emoji_start)
99135

136+
set_text_start = self._now_ms()
100137
lbl.set_text(alltext)
138+
self._log_timing("addAllGlyphs/set_text", set_text_start)
101139
self.labelSelectable(lbl)
140+
self._log_timing("addAllGlyphs total", section_start)
102141

103142
def labelSelectable(self, label):
104143
label.add_event_cb(self._focus_obj, lv.EVENT.FOCUSED, None)

0 commit comments

Comments
 (0)