此問題特定於Erlang,但可能對其他IO庫有一般意義。在Erlang中,我可以編寫io:format(IOF, "data: ~p", [Data])
,它會將變量Data
的內容打印到文件IOF
指向的地方。我的問題是這樣的:更好還是更高效地選擇很多小型的io:format()調用,還是一個巨大的調用?例如,什麼會更快?出於演示的目的,假設我Data
變量的大小是每個1KB
在大小和N > 100,000
Erlang io:格式緩衝和效率
場景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])
如果這種差別是微不足道的我我不是很感興趣,但如果可能會有很大的差異,那麼我有興趣知道爲什麼。
io&io_lib是有史以來最慢的狗屎。考慮使用日誌庫或對原始文件進行快速操作。 – user425720
爲什麼它會變慢,爲什麼使用第三部分日誌記錄庫會更快? –
我不熟悉內部實現。 IO一直是Erlang的性能問題,相信我io和io_lib會影響你的系統。使用fprof(profiler)來查看這些函數有多高。 – user425720