Erlang io: буферизация и эффективность формата - PullRequest
2 голосов
/ 01 марта 2011

Этот вопрос относится только к Erlang, но может иметь общие последствия для других библиотек ввода-вывода. В Erlang я могу написать io:format(IOF, "data: ~p", [Data]), и он напечатает содержимое переменной Data в файл, на который указывает IOF. У меня такой вопрос: лучше ли по эффективности отдавать предпочтение множеству небольших вызовов io: format () или одному огромному? Например, что будет быстрее? В целях демонстрации предположим, что размер моих 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:format(IOF, "data1: ~p data2: ~p ... dataN: ~p", [Data1, Data2, ..., DataN])

Если эта разница незначительна, я не очень заинтересован, но если может быть большая разница, мне интересно знать, почему.

1 Ответ

2 голосов
/ 01 марта 2011

Я бы рекомендовал вам изучить режимы file:open/2, один из которых {delayed_write, Size, Delay}. Позволяет буферизовать данные и эффективно записывать их на устройство.

Таким образом, оба звонка, вероятно, не будут иметь большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...