Erlang io:格式缓冲和效率

时间:2011-03-01 13:46:48

标签: file-io erlang performance

此问题特定于Erlang,但可能对其他IO库有一般性影响。在Erlang中,我可以编写io:format(IOF, "data: ~p", [Data]),它会将变量Data的内容打印到文件IOF指向的位置。我的问题是:更好,效率更高,更喜欢许多小的io:format()调用,还是一个巨大的调用?例如,什么会更快?出于演示目的,假设我的Data变量的大小各为1KBN > 100,000

情景A:

io:format(IOF, "data1: ~p", [Data1])
io:format(IOF, "data2: ~p", [Data2])
...
io:format(IOF, "dataN: ~p", [DataN])

情景B:

io:format(IOF, "data1: ~p data2: ~p ... dataN: ~p", [Data1, Data2, ..., DataN])

如果这种差异可以忽略不计,我真的不感兴趣,但如果可能存在很大差异,那么我很想知道原因。

1 个答案:

答案 0 :(得分:2)

我建议您研究file:open/2模式,其中一种是{delayed_write, Size, Delay}。它允许您缓冲数据并有效地将其写入设备。

通过这种方式,这两种电话都不会产生巨大的差异。