1 Star 0 Fork 14

youxinweizhi/MicroPython New FontLib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
fontlib_test.py 3.00 KB
一键复制 编辑 原始数据 按行查看 历史
Walkline 提交于 2021-09-04 22:42 . 增加单独测速的测试文件
"""
The MIT License (MIT)
Copyright © 2021 Walkline Wang (https://walkline.wang)
Gitee: https://gitee.com/walkline/micropython-new-fontlib
"""
from libs.fontlib import FontLib
from utime import ticks_diff, ticks_us
fontlib = None
chars =\
'''  问题,到底应该如何实现。
  既然如此,我们都知道,只要有意义,那么就必须慎重考虑。
  现在,解决问题的问题,是非常非常重要的。
  所以,在这种困难的抉择下,本人思来想去,寝食难安。
  要想清楚,问题,到底是一种怎么样的存在。
  一般来说,生活中,若问题出现了,我们就不得不考虑它出现了的事实。
  维龙曾经说过,要成功不需要什么特别的才能,只要把你能做的小事做得好就行了。
  这似乎解答了我的疑惑。
  这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。'''
def list_bin_files(root):
import os
def list_files(root):
files=[]
for dir in os.listdir(root):
fullpath = ('' if root=='/' else root)+'/'+dir
if os.stat(fullpath)[0] & 0x4000 != 0:
files.extend(list_files(fullpath))
else:
if dir.endswith('.bin'):
files.append(fullpath)
return files
return list_files(root)
def choose_a_file(file_list):
print('\nFile list')
for index,file in enumerate(file_list, start=1):
print(' [{}] {}'.format(index, file))
selected=None
while True:
try:
selected=int(input('Choose a file: '))
print('')
assert type(selected) is int and 0 < selected <= len(file_list)
break
except KeyboardInterrupt:
break
except:
pass
if selected:
return selected
else:
return
if __name__ == '__main__':
font_files = list_bin_files('/')
if not len(font_files): print('no font file found')
selected = choose_a_file(font_files)
if not selected: exit(1)
start_time = ticks_us()
fontlib = FontLib(font_files[selected - 1])
print('### load font file: {} ms'.format(ticks_diff(ticks_us(), start_time) / 1000))
fontlib.info()
start_time = ticks_us()
buffer_list = fontlib.get_characters(chars)
diff_time = ticks_diff(ticks_us(), start_time) / 1000
print('\n### method: load all')
print('### {} chars, get {} chars: {} ms, avg: {} ms'.format(len(chars), len(buffer_list), diff_time, diff_time / len(buffer_list)))
print('\n### method separated')
chunk = 24
char_count = time_count = avg_count = 0
for count in range(0, len(chars) // chunk + 1):
sep_chars = chars[count * chunk:count * chunk + chunk]
start_time = ticks_us()
buffer_list = fontlib.get_characters(sep_chars)
diff_time = ticks_diff(ticks_us(), start_time) / 1000
if not buffer_list: continue
avg_time = diff_time / len(buffer_list)
char_count += len(buffer_list)
avg_count += avg_time
time_count += diff_time
print('### {} get {} chars: {} ms, avg: {} ms'.format(count, len(buffer_list), diff_time, avg_time))
print('### {} chars, get {} chars: {} ms, avg: {} ms'.format(len(chars), char_count, time_count, avg_count / (count-1)))
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/youxinweizhi/micropython-new-fontlib.git
git@gitee.com:youxinweizhi/micropython-new-fontlib.git
youxinweizhi
micropython-new-fontlib
MicroPython New FontLib
master

搜索帮助