У меня есть приложение, которое запускает много потоков параллельно, каждый из которых обрабатывает одни и те же сотни ГБ только для чтения, никогда не меняя данные по-разному. Даже с ZeroFormatter требуется время, чтобы загрузить все данные в память, прежде чем запускать каждый прогон. Я хотел бы исключить это ожидание.
В C # возможно ли, чтобы один процесс загружал данные в память и постоянно их сохранял, а другой процесс, запущенный позже, эффективно получал доступ к данным? место?
Редактировать:
Хорошо, мои извинения за то, что я не включил достаточно соответствующей информации. Я обрабатываю последовательные данные временных рядов на очень мощном оборудовании с половиной терабайта памяти. До сих пор потоковая передача данных с диска и их постепенная обработка, что обычно и происходит, выполняется медленнее, чем загрузка всех данных в первую очередь, поскольку процесс не ограничен ЦП, но ограничена пропускная способность памяти для ЦП. Я хотел просто сохранить все это в памяти и пропустить шаг, который занимает больше всего времени.
У меня возникает желание снять вопрос или, по крайней мере, пометить комментарий как ответ. Если процесс для обработки доступа к памяти очень медленный, то на самом деле нет никакого способа ускорить его, потому что я уже делю данные по ядру NUMA.