注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

dcexpert的个人空间 http://home.eeworld.com.cn/space-uid-573537.html [收藏] [复制] [分享] [RSS]

日志

【ESP32学习】SD卡速度比较测试2

已有 49 次阅读2018-9-16 16:26 |个人分类:MicroPython

前一段时间我们进行了两种SDIO方式文件读取速度比较,站长就这个问题询问了ESP32_Lobo版的作者Boris,他回答说是对于小文件两种方式区别不大。

为此,我们继续进行了大文件的读写测试。通过读取3个不同大小的文件,来判断读取速度。先将3个文件复制到SD卡,并改名为1、2、3,文件大小分别是:60708、639659、5235712。测试程序如下:

SD 1Line mode(4 Line mode程序类似,就不贴出了)
  1. import os
  2. import time

  3. os.sdconfig(os.SDMODE_1LINE)
  4. os.mountsd()

  5. def filesize(fn):
  6.     try:
  7.         i = os.stat(fn)
  8.         return i[6]
  9.     except:
  10.         return 0

  11. def loadf(p):
  12.     total = 0
  13.     print('============================================')
  14.     print('file name:', p[0])
  15.     print('file size:', filesize(p[0]))
  16.     for i in range(p[1]):
  17.         with open(p[0]) as f:
  18.             while True:
  19.                 x = len(f.read(1024))
  20.                 total += x
  21.                 if x<1024:
  22.                     break
  23.     return total

  24. def time_it(f, n):
  25.     t0 = time.ticks_us()
  26.     total = f(n)
  27.     t1 = time.ticks_us()
  28.     dt = time.ticks_diff(t1, t0)
  29.     print('{} bytes {:5.3f} sec : {:8.3f} Mbytes/sec'.format(total, dt * 1e-6, total/dt))
  30.     return total/dt

  31. print('============================================')
  32. print('       ESP32 SD 1Line mode speed test:')

  33. r0 = time_it(loadf, ('/sd/0', 10))
  34. r1 = time_it(loadf, ('/sd/1', 1))
  35. r2 = time_it(loadf, ('/sd/2', 1))
复制代码


测试结果

SD 1Line mode
  1. ============================================
  2.        ESP32 SD 1Line mode speed test:
  3. ============================================
  4. file name: /sd/0
  5. file size: 60708
  6. 459910 bytes 2.111 sec :    0.218 Mbytes/sec
  7. ============================================
  8. file name: /sd/1
  9. file size: 639659
  10. 639659 bytes 4.029 sec :    0.159 Mbytes/sec
  11. ============================================
  12. file name: /sd/2
  13. file size: 5235712
  14. 5167548 bytes 29.547 sec :    0.175 Mbytes/sec
  15. >>>
复制代码

SD 4Line mode
  1. ============================================
  2.        ESP32 SD 4Line mode speed test:
  3. ============================================
  4. file name: /sd/0
  5. file size: 60708
  6. 459910 bytes 2.027 sec :    0.227 Mbytes/sec
  7. ============================================
  8. file name: /sd/1
  9. file size: 639659
  10. 639659 bytes 3.967 sec :    0.161 Mbytes/sec
  11. ============================================
  12. file name: /sd/2
  13. file size: 5235712
  14. 5167548 bytes 28.836 sec :    0.179 Mbytes/sec
  15. >>>
复制代码

可以看到,1Line和4Line模式的结果仍然差别非常小。





此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-9-22 05:52 , Processed in 0.016328 second(s), 11 queries , Gzip On, Redis On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部