You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Предлагается следующее. Рантайм (скомпилированный в особом режиме) при запуске открывает файл с заданным именем, содержащий имена функций, подлежащие профилировке. Затем, на каждом шаге рефал-машины сравнивает имя выполняемой функции с известными именами и, если имя находится, осуществляет профилировку заданной функции.
Детали. Дьявол кроется в деталях.
На каждом шаге сравнивать имя накладно. Но если в узлах поля зрения для функций хранить не указатель на функцию + указатель на имя, а указатель на дескриптор (который, в свою очередь, хранит указатель на функцию и имя), то выполнение можно организовать более эффективно. Дескриптор дополняется полем отладочных флагов, изначально равным нулю. Бит 0 означает, что функция уже известна, бит 1 — подлежит профилировке. На каждом шаге проверяется поле, если оно равно нулю, то (1) устанавливается бит 0, проверяется имя и, при необходимости, устанавливается бит 1. Затем профилировка осуществляется для функций с установленным битом 1.
Взаимодействие с Простым Рефалом — тут одни вопросы. При компиляции в него все имена декорируются, поэтому вопрос, как выписывать профилируемые функции в файл. Рантайм привязывается к профилировщику — надо ли переносить профилировщик в Простой Рефал.
Имя файла со списком функций можно указывать в виде макроса препроцессора (как имя файла дампа сейчас). Тогда, если этот макрос не определён, код, ответственный за профилирование даже не включается.
Отладочное поле флагов можно использовать и для других целей: трассировка, break-point’ы и т. д.
The text was updated successfully, but these errors were encountered:
Предлагается следующее. Рантайм (скомпилированный в особом режиме) при запуске открывает файл с заданным именем, содержащий имена функций, подлежащие профилировке. Затем, на каждом шаге рефал-машины сравнивает имя выполняемой функции с известными именами и, если имя находится, осуществляет профилировку заданной функции.
Детали. Дьявол кроется в деталях.
Отладочное поле флагов можно использовать и для других целей: трассировка, break-point’ы и т. д.
The text was updated successfully, but these errors were encountered: