Есть ли общие черты в стоимости выполнения инструкции в javascript? - PullRequest
2 голосов
/ 21 октября 2008

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

Например, eval () медленнее, чем вызов функции, которая уже была объявлена.

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

Существует ли такой документ?

1 Ответ

2 голосов
/ 22 октября 2008

Здесь есть страница (от одного из наших выдающихся хостов, не менее), которая дает разбивку по браузерам и по общему классу инструкций:

http://www.codinghorror.com/blog/archives/001023.html

Приведенная выше страница ссылается на более подробную разбивку здесь:

http://www.codinghorror.com/blog/files/sunspider-09-benchmark-results.txt

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

Существует также ссылка на сам бенчмарк:

http://www2.webkit.org/perf/sunspider-0.9/sunspider.html

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

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

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

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