Граждане, есть идеи, как рассчитать максимально занимаемую моей программой оперативку?
Суть проблемы: есть файл, он будет очень часто анализироваться в несколько потоков. Чтобы это дело ускорить и не читать постоянно с диска, хочу загрузить его в память.
Я могу подсчитать сколько будет занимать буфер для результатов анализа, зная размер файла, знаю размер всех вспомогательных данных, которые использую, НО: как мне узнать накладные расходы на потоки, объекты синхронизации, накладные расходы стдшных структур и прочие штуки, которые я лично явно не создавал?
Собственно, зачем это: чтобы, если файл слишком большой и не поместится в ОЗУ нужное количество раз (под каждый поток же) - не читать его сразу, а когда нужно читать с диска.
Я так понимаю, тебе интересует асимптотика потребления памяти от размера файла.
Так вот, в таком случае:
накладные расходы от мьютексов постоянны
накладные расходы на потоки пропорциональны количеству потоков
накладные расходы большинства контейнеров обычно пропорцианальны размеру (потреблеямая память/минимально необходимая память <= 2)
Соответственно скорее всего выйдет прямая пропорциональность
Если смотреть на коэффициент пропорциональности, то самая большая часть тут, думаю, аллокатор.