gpt4 book ai didi

.net - FileStream.ReadByte - 低效 - 这是什么意思?

转载 作者:行者123 更新时间:2023-12-01 07:22:01 25 4
gpt4 key购买 nike

The default implementation on Stream creates a new single-byte array and then calls Read. While this is formally correct, it is inefficient. Any stream with an internal buffer should override this method and provide a much more efficient version that reads the buffer directly, avoiding the extra array allocation on every call.



取自 FileStream.ReadByte 文档:

http://msdn.microsoft.com/en-us/library/system.io.filestream.readbyte.aspx

这是什么意思,我如何克服这种低效率?

最佳答案

这仅在您从 Stream 继承时才需要关注。 .这样做时,您必须至少提供 Read方法,ReadByte在基类中在它之上实现。这很好,但是当您的流能够直接获取单个字节时效率低下 - 默认实现将首先在内部创建一个单字节缓冲区,将其传递给 ReadByte填充它,然后返回单个字节。如果您可以实现您的缓冲区,以便可以直接返回单个字节,而无需分配临时缓冲区,那么您应该这样做。

对于调用代码,唯一的考虑是当您需要读取字节以将它们存储在缓冲区中时,Read通常比 ReadByte 更有效率,即使您只读取一个字节 - 但如果您真的只需要一个字节,并且您使用的流实现提供了优化版本,ReadByte实际上可能更快。如果读取单个字节进行立即处理,ReadByte根本不应该是一个问题 - 毕竟,大多数标准流类已经缓冲并且应该提供优化的 ReadByte .如果有疑问,配置文件。

关于.net - FileStream.ReadByte - 低效 - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com