конструкция компилятора — Стоимость отлова SIGSEGV в Stack Overflow

Я пытаюсь оптимизировать чужую программу для проекта компилятора, и у меня возникла пара вопросов.

Эта программа устанавливает блок памяти только для чтения, а затем записывает в него данные на основе ранее неизвестного ввода. Затем он перехватывает вызываемый SIGSEGV, сохраняет адрес страницы и затем разрешает запись страницы памяти. Таким образом, он может отслеживать, какие страницы были «загрязнены». Это позволяет программе избежать хранения гигабайтов ненужного места.

Мой главный вопрос: какой удар вызывает, а затем ловит SIGSEGV, стоит производительности? Это действительно поможет мне определить, помогут ли некоторые из моих идей по изменению программы или они действительно ухудшат ситуацию.

В идеале я смогу избежать использования метода SIGSEGV, используя умные методы компиляции, но я хочу определить, насколько неэффективен текущий метод в первую очередь.

Спасибо!

0

Решение

Вполне вероятно, что обработка случайных сбоев страниц значительно эффективнее, чем «умные методы компиляции», которые вы имеете в виду, какими бы ни были эти методы.

Конечно, единственный способ убедиться, это измерить оба.

Постскриптум Для некоторых чисел см. https://stackoverflow.com/a/10227511/367273

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]