首页 > 解决方案 > 我们可以在 Julia 中自定义文件打开缓冲区大小吗

问题描述

open()io.h设置由: = 32kb定义的内存缓冲区IOS_BUFSIZE(以前为 128kb)

是否可以更改该值(未来的openkwargs?)或使其适应磁盘块大小(在 GPFS 中通常非常大等)?

标签: juliabuffer

解决方案


据我所知,目前无法从 Julia 更改此设置(无法在 Julia 中重新实现ios.c:_buf_realloc)。通过 PR 将此功能添加到 Julia 将非常容易。例如添加如下内容src/support/ios.c

int ios_growbuf(ios_t *s, size_t sz)
{
    return _buf_realloc(s, sz) == NULL;
}

然后类似以下内容base/iostream.jl

function sizehint!(s::IOStream, sz::Integer)
    ccall(:ios_growbuf, Cint, (Ptr{Cvoid}, Csize_t), s.ios, sz) != 0 &&
        throw(OutOfMemoryError())
end

推荐阅读