Я думаю, что есть две основные причины. пункт 1) Программного обеспечения зрения (Linux Kernel) 2) Оборудование точка зрения (Жесткий диск предполагается)
точки зрения программного обеспечения: Это зависит от типа файловой системы в использовании, а также насколько эффективно файловая система управляет диском пространство. В Linux есть что-то, называемое «буферным кешем», которое используется всеми файловыми системами, и каждая запись в любой из ваших файлов сначала переходит в буферный кеш, и это мгновенно очищается демонами ядра. Существует некоторый верхний предел количества записываемых буферных блоков в кеше, как только он достигнет предела, он будет сбрасывать их на соответствующие драйверы, которые запустится на диск.
Как и в вашем случае, если, например, вы пишете около 100 байт данных и при достижении определенного предела, вернитесь к началу файла и продолжите это. В этом случае количество записываемых блоков буфера, которые вы генерируете в течение определенного периода времени в файле размером 20 МБ, больше по сравнению с 5 МБ. И другим важным моментом является то, что число чтения/записи на диске больше в случае файла с 20 МБ, потому что ядро очищает больше от большего файла, так как может иметь более грязные блоки. Но в файле размером 5 МБ грязные блоки, хотя и не так много, вы все равно можете перезаписать их до того, как ядро выведет их на диск.
Аппаратная точка зрения: Это зависит от количества движений спинов и барабанов, которые должны иметь место для чтения/записи вашего файла на диск. Предполагая, что ваше linux-ядро (драйвер файловой системы) пытается выделить секвенсорные секторы на жестком диске, возможно, что файл размером 20 МБ занимает сектора, которые разбросаны по всему диску, в то время как 5 МБ очень мало разбросано esp с сильно используемым жестким диском. Это означает, что если ваш файл равен 100 МБ, он будет медленнее по сравнению с файлом 20 МБ.И поскольку вы будете многократно переписываться в секторы, которые вы уже написали, вращение руки будет больше в случае 20 МБ файла по сравнению с файлом 5 МБ, особенно если доступ к диску больше в случае с 20 МБ.
Это то, что я думаю, что файл будет читать/записывать медленнее по мере увеличения размера файла. И снова, в приведенном выше объяснении, я не рассмотрел несколько процессов, записывающих несколько файлов. Это сделает чтение/запись еще медленнее на HDD ..
Скай: Я не мог понять, почему все содержимое файла должно быть написано выше. Не могли бы вы рассказать? –
@ Saran-san Поскольку файл состоит из одного или нескольких * блоков * определенного размера. Блоки не соответствуют строкам или словам или символам или чему-либо еще. При изменении содержимого необходимо переписать хотя бы блок (ы), содержащий контент. Но если контент растет или сжимается, все последующие блоки также затрагиваются, потому что содержимое файла постоянно * сохраняется * над этими блоками. Представьте себе лист бумаги с * непрерывно * написанным текстом. Теперь попробуйте вставить или удалить новое слово где-нибудь. Все остальное содержимое должно будет двигаться. – scai
Скай: Думаю, теперь это имеет смысл. Спасибо вам за разъяснение :) –