この質問はErlangに固有ですが、他のIOライブラリには一般的な意味があります。 Erlangではio:format(IOF, "data: ~p", [Data])
と書くことができ、変数Data
の内容をIOF
が指すファイルに出力します。私の質問はこれです:多くの小さなio:format()コール、または1つの巨大なコールを好むことは、効率的な方が良いでしょうか?たとえば、何が速いでしょうか?この差はごくわずかである場合、私はErlang io:フォーマットのバッファリングと効率
io:format(IOF, "data1: ~p data2: ~p ... dataN: ~p", [Data1, Data2, ..., DataN])
:デモの目的のために、私のData
変数のサイズは、サイズが1KB
それぞれであると仮定し、N > 100,000
シナリオA:
io:format(IOF, "data1: ~p", [Data1])
io:format(IOF, "data2: ~p", [Data2])
...
io:format(IOF, "dataN: ~p", [DataN])
シナリオB本当に興味はありませんが、大きな違いがある場合は、理由を知ることに興味があります。
io&io_libはこれまでで最も遅いです。ロギングライブラリの使用や、生ファイルの高速処理を検討してください。 – user425720
なぜそれは遅く、なぜ3番目のロギングライブラリを使用する方が高速でしょうか? –
私は内部実装に精通していません。 IOは常にErlangのパフォーマンス上の問題であり、ioとio_libがシステムに影響すると私は信じています。 fprof(profiler)を使用して、これらの関数の高さを確認します。 – user425720