Это интересный вопрос, так как вы открыли большинство профилей разработчиков на своих машинах. Я не уверен, есть ли какой-либо другой способ, кроме использования в вашем коде профилировщика производительности. Интересная часть, которую вы затронули, заключается в том, что она основана на отзывах пользователей и не обязательно будет постоянно отправляться на сервер.
Мы могли бы разработать класс javascript Profiler, который в основном собирает:
- Имя функции
- Сетевое время туда-обратно
- Общее время выполнения функции
- UserMachineProcessingTime = Общее время выполнения функции в обоих направлениях по сети
- Другая полезная информация (похожая на ту, что предоставляет YSlow или аналогичные инструменты)
Поскольку вы упоминаете, что его основано на отзывах пользователей, нам не нужно отправлять эту информацию все время, когда вызывается каждая функция (что делает приложение очень разговорчивым). Затем мы собираем эту информацию на стороне клиента и, возможно, храним ее где-то (возможно, используя локальное хранилище HTML5?)
Только когда пользователь дает свое согласие на отправку профиля производительности, мы отправляем эту информацию на сервер, где вы получаете необходимые данные. Было бы также интересно посмотреть, как отреагирует пользователь, если мы представим крошечное сообщение: «Мы замечаем, что ваша производительность ниже, чем у наших средних пользователей. Хотите отправить свой профиль производительности, чтобы мы могли учиться и делать его лучше?» (Нужна другая формулировка, мне плохо с этим, но это в основном сообщение). Сказав «да», профиль отправляет собранную им совокупную информацию + дополнительную информацию, которую может собрать Javascript (пользовательский агент и т. Д.). Конечно, вопрос в том, сколько пользователей захотят отправить информацию в своем профиле, но это один из подходов, который мы могли бы попробовать.