Является ли выходная буферизация дороже, чем попадание в FS? - PullRequest
0 голосов

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Буферизация вывода работает в оперативной памяти. Попадание в файловую систему может привести к попаданию только в ОЗУ (кэш), но оно может поразить диски. Каждый раз, когда вы нажимаете на диски, вы наблюдаете по крайней мере на порядок медленнее по сравнению с прямым доступом к ОЗУ.

0 голосов
/ 15 мая 2010

Я бы сказал, что это зависит от того, что дорого стоит в вашей системе ... если вам абсолютно необходимо использовать минимально возможный объем памяти, тогда запись непосредственно на диск может быть вашим единственным вариантом, хотя базовая система реализует запись на диск 'будет по-прежнему записывать кусками, когда это возможно, поскольку вы, вероятно, не вызываете' write 'для каждого символа.

В конце концов, буферизация в разумных пределах происходит быстрее ... Самый простой способ проверить это - выписать большую строку символов, по одному символу за раз, затем строку в несколько разумных кусков.

Имея это в виду, я не могу думать о том, почему бы вам не хоть как-то буферизовать свой вывод! Если все, что вы делаете, это копируете файл из одного места в другое, то использование системного вызова (если доступно), вероятно, намного быстрее, чем чтение, буферизация и запись в PHP.

...