从串行读取数据块是不是比一次读取 1 个字符更快?
Posted
技术标签:
【中文标题】从串行读取数据块是不是比一次读取 1 个字符更快?【英文标题】:Is reading blocks of data from serial faster than reading 1 character at a time?从串行读取数据块是否比一次读取 1 个字符更快? 【发布时间】:2013-02-11 23:36:33 【问题描述】:从串行端口读取大块是否比一次读取 1 个字节更快?众所周知,读取块通常更快。但是,我想知道串行通信是否属于这种情况,因为:
-
现代处理器速度与旧协议
与 USB 等新的通信方法不同,串行一次传输 1 位
作为后续,使用 USB 作为串行连接(使用类似 PL2303 驱动程序,如果有帮助的话)对此有何影响?
当我在考虑如何解析来自串行端口的传入消息时出现了这个问题。使用当前的设计,一次解析 1 个字符会更容易,但是,我也想高效地进行读取。
【问题讨论】:
用户态应用程序?还是内核驱动? 然后尝试读取块。每个字节一个系统调用可能是相当多的开销。 "串行一次传输一位,不像USB这样的新通信方式" -- USB也是串行的,一次传输一位。 “串行”是指 EIA/RS-232 接口吗? 是否有表明有新数据可用的事件?如果是这样,请读取所有可用字节。 【参考方案1】:除非您直接使用串行硬件,否则我想您的操作系统会缓冲传入的数据,并且一次读取数据块仍然会更有效。
你可以两种方式都做,看看哪个更快。
鉴于 S 代表串行,USB 肯定只是一种快速串行连接。
【讨论】:
以上是关于从串行读取数据块是不是比一次读取 1 个字符更快?的主要内容,如果未能解决你的问题,请参考以下文章
比 Scanner 或 BufferedReader 从 STDIN 读取多行数据更快的方式?