профиль javascript в Firefox - PullRequest
       42

профиль javascript в Firefox

2 голосов
/ 27 октября 2009

(я знаю, что некоторые люди уже задавали вопросы о профиле js, но это не то, что мне нужно, если я правильно их понимаю.)

Я хотел бы отследить выполнение javascript для сбора информации о 1), какая функция вызывается, 2) времени, когда вызывается функция, и 3) времени выполнения функции.

Я хочу собирать информацию онлайн (по развернутому коду), но не внутри компании. Таким образом, компромисс должен быть легким. Кроме того, я не хочу вручную добавлять строку до и после того, где вызывается функция. Тем не менее, было бы замечательно, если бы был способ, который может динамически обрабатывать код.

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 27 октября 2009

Я не думаю, что существует какая-либо система, в которой JavaScript будет автоматически отслеживать время запуска функции и время остановки функции. Это, вероятно, то, что вы должны будете добавить сами. Если это то, что вам нужно, вы можете рассмотреть возможность использования PHP для обслуживания вашего JavaScript и использования регулярного выражения для поиска начала и конца каждой функции с помощью регулярного выражения или чего-то в этом роде.

Ваш RegExp может выглядеть так (полностью не проверено, поэтому вам придется экспериментировать):

/function [A-Za-z_$][A-Za-z0-9_$]*{(.*?)}/i

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

Преимущество состоит в том, чтобы делать именно то, что вы хотите, не беспокоясь о том, как изменить функционирование вашего js-кода. Это то, что сервер будет обрабатывать полностью.

Либо так, либо вместо прямого вызова функции используйте функцию-обертку:

function wrapFunction( func, context, argList )
{ 
    // Replace with however you are storing this.
    console.log( new Date().getTime() );
    func.apply( context, argList );
    console.log( new Date().getTime() );
}

Преимущество состоит в том, что вы будете намного чище, чем когда сервер обновит ваш JS для вас. К сожалению, это также означает необходимость переписывать JS вручную.

Я бы порекомендовал просто адаптировать синтаксис ведения журнала и использовать его. Большинство регистраторов выводят метку времени, контекст, уровень и конкретное сообщение. Если вы просто вызовете регистратор в начале и конце функции, он сделает именно то, что вы ищете. Кроме того, поскольку многие из них можно настраивать, вы сможете отображать их на консоли JS в Firefox, отправлять информацию на сервер или полностью отключать, если захотите.

Список регистраторов JS здесь:

JavaScript логгеры

К сожалению, это потребует от вас обновления всего вручную, но кажется, что это самый простой способ получить 90% того, что вы ищете, из коробки.

1 голос
/ 25 июля 2013
console.profile([title])
//also see
console.trace()

http://getfirebug.com/wiki/index.php/Console_API

1 голос
/ 27 октября 2009

Возможно, профилировщик в FireBug поможет вам отследить медленные функции.

Вот видео , детализирующее параметры профилирования. (Индекс: 3:20).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...