D 中 byChunk() 和 chunks() 之间的区别

标签 d

在 D 中,我可以通过以下方式“一次一大块”迭代文件:

foreach (ubyte[] block; chunks(myfile, 4096))

foreach (ubyte[] block; myfile.byChunk(4096))

我似乎找不到 documentation 中的任何重大差异。 是否有任何语义差异,或者只是语法?

最佳答案

浏览source你可以看到

myfile.byChunk 将有 struct与范围属性(前面为空 popFront)

同时chunks有一个带有 opApply 的结构(不是范围)

看起来 chunks 结构在直接的 foreach 中效率更高,因为它绕过了 File 的抽象,并且在 byChunk 时它将尝试在堆栈上分配缓冲区将始终在堆上分配,并且必须处理抽象层(它们都是非虚拟函数,因此可以内联,但仍然......),但具有作为实际范围的优点

关于D 中 byChunk() 和 chunks() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507217/

相关文章:

d - 判断模板参数是否为结构体

Dlang 切片和数字范围

string - 从 D 中的 float 转换为 const(char)*

api - D 中基于任务的并行性

twitter - 在 D 中生成随机字母数字字符串

c++ - C++、D 和 C++0x 之间的主要区别是什么?

.net - 在 .NET 上下文中使用 D 编程语言

exception - listener.d : crashes upon unclean disconnect

arrays - 如何处理 D 中没有命令行参数?

templates - 如何明确引用此模板成员?