Оптимизация замещения страниц памяти

Рейтинг: -2Ответов: 1Опубликовано: 30.04.2015

Как определить потребуется ли при выполнении кода замещать страницы памяти и сколько замещений потребуется или код ограничится одной страницей? Желательно применительно к C#.

Ответы

▲ 2Принят

Никак. Эти факторы зависят не от кода, а от окружения.

Однако, кое-что можно сделать. Можно уменьшить рабочий набор программы - это, как правило, уменьшает число замещений страниц. Для уменьшения же рабочего набора обычно достаточно использовать меньше памяти. В общем случае это единственный способ для языка такого высокого уровня, как C#.

Еще один способ - хранить данные, к которым надо обращаться последовательно, рядом. Так, если у вас есть крупный массив объектов, иногда может помочь преобразование его в массив структур. Но такое преобразование может оказаться дорогим в плане организации кода или даже невозможным.

Еще популярный, но ограниченный способ оптимизации - при работе с матрицами имеет смысл сканировать их не по столбцам, а по строкам. Если алгоритм требует многократного прохода по столбцам матрицы - имеет смысл предварительно матрицу транспонировать.

Но все эти способы следует применять только тогда, когда они реально на что-то влияют. Скажите, вы выполняли профилирование работы программы? В Visual Studio есть встроенный профайлер, так же можно скачать триал dotTrace от jetbrains.