вопросы производительности при динамической загрузке объектов Javascript

StackOverflow https://stackoverflow.com/questions/841959

Вопрос

Что быстрее,

  1. Используя запрос XMLHTTP Get, а не используя eval() для reponsetext

  2. Использование метода JSONP для загрузки скрипта и последующей оценки innerHTML скрипта.

  3. Динамическое добавление тега script в заголовок документа, где объекту javascript присваивается переменная?

Моя интуиция подсказывает мне, что это должен быть вариант 3, но я не уверен, как eval сравнивается с использованием тега script.Есть какие-нибудь мысли?

Это было полезно?

Решение 3

Я согласен, что библиотека JSON2, вероятно, является подходящим вариантом для обработки eval().Но что касается транспорта, похоже, что механизм JSONP работает быстрее, чем XMLHttpRequest, согласно некоторому анализу, проведенному Джоном Ресигом.

http://ejohn.org/blog/native-json-support-is-required/

Другие советы

Это может варьироваться в зависимости от браузера и некоторых других факторов, поэтому я думаю, что если вы действительно хотите добиться наилучшей производительности, вам следует провести несколько тестов и профилировать их.Во-первых, производительность eval() может сильно различаться в зависимости от того, что вы вычисляете()

Вы должны просто использовать Библиотека JSON2 для анализа данных json, как с помощью eval небезопасно (используя eval приводит к большому количеству потенциальных эксплойтов сайта), это медленно (особенно в новых jitting JS-движках), и, наконец (что более важно) объект JSON, предоставляемый библиотекой JSON2, становится частью скрипта ecma (например.javascript) стандарт, что означает, что браузеры теперь реализуют синтаксический анализ json (и строковую обработку) изначально, что приводит к значительному повышению производительности.

К счастью, если вы используете библиотеку JSON2, она обнаруживает существование собственной реализации объекта JSON и не переопределяет ее, поэтому простое произвольное ее использование даст вам безопасную реализацию, которая волшебным образом станет быстрее по мере улучшения поддержки браузера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top