在D中,我可以通过以下方式“一次一个块”遍历文件:
foreach (ubyte[] block; chunks(myfile, 4096))
或
foreach (ubyte[] block; myfile.byChunk(4096))
我似乎在documentation中找不到任何主要的区别。有没有语义上的不同,或者只是语法上的不同?
发布于 2012-03-01 08:24:27
通过source,您可以看到
myfile.byChunk将有一个具有范围属性的struct (前面为空popFront)
myfile.byChunk
struct
而chunks有一个带有opApply的结构(不是一个范围)
chunks
opApply
看起来chunks结构在直接的foreach中更有效,因为它绕过了文件的抽象,它将尝试在堆栈上分配缓冲区,而byChunk将始终在堆上分配缓冲区,并且必须处理抽象层(这些都是非虚拟函数,因此可以内联,但仍然...)的优点是它是一个实际的范围。
byChunk
https://stackoverflow.com/questions/9507217
相似问题