Comments 31
Жесть — такой разброс. Я так понимаю, лучше eval получается. Спасибо статью, реально полезно.
лучше — враппер, для кроссбраузерности
когда везде будет натив, тогда и на него можно будет перейти
меня приятно удивила быстрая натив-поддержка в ie8, так держать, глядишь когда-нибудь руки дойдут и до ускорения самого js
когда везде будет натив, тогда и на него можно будет перейти
меня приятно удивила быстрая натив-поддержка в ie8, так держать, глядишь когда-нибудь руки дойдут и до ускорения самого js
Ой, поясните пожалуйста насчет кроссбраузерности. А то хочется чтоб не только работало, но и работало хорошо :)
Не понимаю, чему тут удивляться если даже отточенная нативная поддержка этой функции работает в нем так же, как в опере полноценный eval и в разы медленнее, чем eval в вебките. В фаерфоксе вообще сделано для галочки, вообще никакого прироста нет. Зачем делали, не понятно.
Спасибо за статью. Познавательно.
… но я едва ли когда-нибудь буду обрабатывать JSON «вручную». Скорее, я воспользуюсь услугами какого-нибудь JS-фрэймворка. Например, JQuery. Так что если разработчики JQuery ещё не реализовали поддержку нативного JSON парсера, то я уверен, что они будут рады коммиту этого wrapper-а.
… но я едва ли когда-нибудь буду обрабатывать JSON «вручную». Скорее, я воспользуюсь услугами какого-нибудь JS-фрэймворка. Например, JQuery. Так что если разработчики JQuery ещё не реализовали поддержку нативного JSON парсера, то я уверен, что они будут рады коммиту этого wrapper-а.
учитывая что new function только в FF 2 и 3 чуть чуть быстрее, его вообще можно не использовать. или есть какие то другие причины использовать?
Чота я сомневаюсь в адекватности этого теста.
Смотря в каких условиях eval быстрее новой функции, если это делать в десять раз вложенной функции думается мне результаты будут иными.
Смотря в каких условиях eval быстрее новой функции, если это делать в десять раз вложенной функции думается мне результаты будут иными.
имеете в виду 10 раз вложенной так:
new function() {
new function() {
new function() {
}
}
}
ну между ними еще какие то дейтсвия. так?
new function() {
new function() {
new function() {
}
}
}
ну между ними еще какие то дейтсвия. так?
var o;
function(){
var o;
function(){
…
function(){
var o = new Function(..)
или
var o = eval(...)
}
…
}
}
еще наверняка от длины самого JSON-а может зависить, потому как создание обекта-функции конечно долго но парсинг длинной строки js кода в eval с учетом всех видмых переменных и в замкниях… хотя конечно их в json не будет, но парсер то об этом не знает.
кстати врапер тут плохо написан отвратительно не проверяет стоку на предмет а похоже ли на json оно вообще. да еще туда сюда native метод JSON() перезаписывает — безсмысленно и безобразно.
function(){
var o;
function(){
…
function(){
var o = new Function(..)
или
var o = eval(...)
}
…
}
}
еще наверняка от длины самого JSON-а может зависить, потому как создание обекта-функции конечно долго но парсинг длинной строки js кода в eval с учетом всех видмых переменных и в замкниях… хотя конечно их в json не будет, но парсер то об этом не знает.
кстати врапер тут плохо написан отвратительно не проверяет стоку на предмет а похоже ли на json оно вообще. да еще туда сюда native метод JSON() перезаписывает — безсмысленно и безобразно.
FireFox удивил.
Да, IE8 начинает радовать, осталось за малым, чтобы вытеснил другие версии IE :)
Интересно еще было бы увидеть результаты для Opera 10, хотя они наверно похожи на 9.64.
Интересно еще было бы увидеть результаты для Opera 10, хотя они наверно похожи на 9.64.
Как раз нет. Не смотря на то, что gmail работает в 10 альфе в разы быстрее, чем в 9.64, именно этот тест он проигрывает раза эдак в 3, как eval, так и function.
Рано десятку еще сравнивать с другими, она пока что в стадии проработки движка. Бету уже можно будет потестировать.
Еще интереснее было бы увидеть результаты для Opera 9.2x, для России это (к сожалению?) пока более актуально :(
А тесты проводили только 1 раз или несколько и брали усередненное значение?
ээмм, результаты под большим сомнением. имхо нужно было на каждой итерации строить новую строку с жсоном на основании рандомных данных.
потому что возможно новые хром и сафари-4 (с яваскрипт движками с JIT) оптимизируют — видят строку в цикле и реально парсят её только 1 раз и запоминают результат.
также не написано был ли включен TraceMonkey для фф3.1, думаю если бы был включён получили бы ту же картину с эвалом что и у хрома/сафари-4.
потому что возможно новые хром и сафари-4 (с яваскрипт движками с JIT) оптимизируют — видят строку в цикле и реально парсят её только 1 раз и запоминают результат.
также не написано был ли включен TraceMonkey для фф3.1, думаю если бы был включён получили бы ту же картину с эвалом что и у хрома/сафари-4.
Жалко, в этой статье нет сравнению с протоколом JSONP (через тэг script).
А ведь тэг script часто считается быстрее, чем eval или JSON.parse.
А ведь тэг script часто считается быстрее, чем eval или JSON.parse.
Sign up to leave a comment.
Сравнение производительности браузеров при обработке JSON-строк