Я написал крошечную программу, которая измеряет время для функции c write () в Linux. Что меня удивляет, так это то, что время не одинаково для нескольких итераций. Я видел, что первая запись занимает намного больше времени, чем непосредственная последующая запись. Шаблон продолжается в нескольких комбинациях прогонов / размер файла-буфера.
Вот код: https://drive.google.com/file/d/1akwUz9mykkp0kk-FID9jxPClwJMD7uRI/view?usp=sharing
Вот частичный результат:
это: 0 размер: 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,051 S: MS
it: 1 размер файла: 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,027 S: MS
it: 2 файла : 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,022 S: MS
it: 3 размер файла: 4,00 МБ размер буфера: 1,00 МБ writeTime: 0,021 S: MS
it: 4 размер файла: 4,00 МБ размер буфера : 1,00 КБ writeTime: 0,021 S: MS
it: 5 Размер: 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,021 S: MS
it: 6 Размер буфера: 4,00 МБ размер буфера: 1,00 КБ writeTime : 0,022 S: MS
it: 7 размер файла: 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,022 S: MS
it: 8 размер файла: 4,00 МБ размер буфера: 1,00 МБ writeTime: 0,021 S: MS
it: 9 размер файла: 4,00 МБ размер буфера: 1,00 КБ writeTime: 0,021 S: MS
Обратите внимание, как вызов функции записи на нем: 0 потребовал почти в два раза больше, чем последовательных вызовов. Этот образец повторяется неоднократно. Возможно, это как-то связано с кешем linux страниц, но я не знаю, как именно это работает. Помогите!