Имеет ли Silverlight преимущество производительности над JavaScript?
В недавнем обсуждении Silverlight появилось преимущество скорости. Аргументом для Silverlight было то, что он работал лучше в браузере, чем Javascript, потому что он скомпилирован (и управляется) кодом.
Затем было указано, что это преимущество относится только к IE, потому что IE интерпретирует Javascript, который неэффективен по сравнению с другими браузерами, такими как Chrome и FireFox, которые компилируют Javascript для машинного кода перед исполнением и как таковые выполняют, а также Silverlight.
Есть ли у кого-то окончательный ответ на этот вопрос производительности. то есть, будет ли Silverlight и Javascript иметь сопоставимую производительность в Chrome и Firefox?
Ответы
Ответ 1
Спекуляция - это весело. Или мы могли бы попробовать тест или два...
Что Silverlight vs. Javascript chess sample обновлен для Silverlight 2. Когда я запустил его, С# усредняет 420 000 узлов в секунду против Javascript на 23 000 узлов в секунду. Я запускаю ветку dev в Google Chrome (v. 0.4.154.25). Это еще почти 18-процентное преимущество для Silverlight.
Расчет простых чисел показывает преимущество 3x для Silverlight: вычисление 1 000 000 простых чисел в Javascript занимает 3,7 секунды, в Silverlight занимает 1,2 секунды.
Итак, я считаю, что для расчета все еще остается довольно сильное преимущество для Silverlight, и, по моему мнению, это может остаться таким. Обе стороны будут продолжать оптимизировать, но есть некоторые ограничения на то, что вы можете оптимизировать на динамическом языке.
Silverlight пока не имеет преимущества, когда дело касается анимации. Например, тест Bubblemark показывает, что Javascript работает со скоростью 170 кадров в секунду, а Silverlight работает со скоростью 100 кадров в секунду. Я думаю, мы можем ожидать, что это произойдет, когда Silverlight 3 выйдет из-под изменения , так как он будет включать поддержку GPU.
Ответ 2
В большинстве браузеров Javascript запускается на виртуальной машине. Тем не менее, Javascript по-прежнему является напуганным языком, и даже "быстрая" виртуальная машина, такая как V8, невероятно медленна по современным стандартам.
Я ожидаю, что CLR будет быстрее.
Ответ 3
Я не понимаю, почему вы пытаетесь сравнить язык сценариев с подключаемым модулем браузера.
Они не делают то же самое. Первый взаимодействует с DOM, в то время как последний запускает мультимедийные приложения внутри браузера.
Сравнение Flash и Silverlight с точки зрения производительности показалось бы более полезным для меня.
EDIT: После некоторых исследований выяснилось, что вы можете взаимодействовать с DOM в Silverlight. Я не думаю, что это можно рассматривать как хорошую замену Javascript, хотя в производительности есть проблемы, если у вас нет необходимости в интенсивном взаимодействии на стороне клиента. Я вижу два основных disavantadges:
1) Вы заставите своих пользователей загружать приложение Silverlight вместо того, чтобы полагаться на относительно небольшой .js файл.
2) Ваши пользователи должны установить Silverlight перед использованием вашей страницы.
Ответ 4
Я бы сказал, что это архитектурно, это стирка.
С одной стороны, Silverlight представляет собой код MSIL, который достаточно быстро по сравнению с исходным, оптимизированным исходным кодом, но все еще работает медленнее из-за накладных расходов VM (CLR) и будет иметь медленное начальное время загрузки при ngen'd.
С другой стороны, скорость Javascript намного менее надежна из-за огромных вариаций в Javascript-двигателях, которые имеют порядок или больше, в производительности. У вас медленные интерпретаторы, такие как IE, хотя IE8 ускоряет работу, а затем у вас есть более быстрые компиляторы/интерпретаторы, такие как SpiderMonkey и V8, которые только недавно начали изучать пределы производительности Javascript. Там также есть новые технологии в R & D-фазе, такие как TraceMonkey, которые обладают огромным потенциалом для значительного повышения производительности Javascript (приближаются к скорости собственного кода). У Javascript действительно есть присущий ему недостаток: он однопоточен, но, учитывая сложность написания хорошего кода с резьбой, трудно сказать, какая разница.
В конце дня при сравнении яблок с яблоками реальное узкое место в производительности - это DOM, и там не имеет большого значения, какую технологию вы используете для управления им.
Ответ 5
Из бегущего тестирования, которое я сделал, Silverlight работает быстрее.
Вот некоторые интересные результаты, полученные из http://bubblemark.com/
Сравнение Bubblemark по браузеру и Javascript против Silverlight http://www.freeimagehosting.net/uploads/498b58f566.jpg
В общем, Silverlight был намного быстрее, но реализация javascript в Chrome разорвала всех остальных на бит!
Имейте в виду, что это только на одной машине, одной ОС (XP) и т.д. вам нужно будет сделать гораздо более обширные тесты для достижения большего.
Ответ 6
Я бы сказал, да, так как он имеет .NET CLR. При этом, учитывая нерешенные изменения в JavaScript, реализованные в Google Chrome, и в еще не полностью выпущенном Firefox 3.1, возможно, захочется сделать некоторые собственные бенчмаркинга; Пока я не знаю никаких сравнений. (Кто?)
Тем не менее, на мой взгляд,.NET должен быть, как правило, быстрее, чем Javascript, и, как было отмечено ранее, это не ускорит работу сети. Следовательно, для сложных алгоритмов SilverLight будет быстрее, но для сетевых запросов у вас может не быть заметной разницы.
В вопросе производительности вы можете захотеть взглянуть на Flash 10, который может использовать код c/С++, используя "Алхимия". Это может быть более портативное решение, чем SilverLight.
Ответ 7
Похоже, что реализация javascript в Chrome быстрее, чем Silverlight
Ответ 8
Платформы должны рассматриваться здесь. Как Silverlight выполняет в Lnux или Solaris или Mac действительно большой вопрос!
Ответ 9
Как abt HTML5. Я думаю, что при сравнении производительности javascript HTMl играет серьезную роль. Поэтому мы точно сравниваем производительность с помощью HTML5 + javascript и Silverlight.
Ответ 10
Sre, если вы используете "Internet Exploder", это, вероятно, будет...
Если вы используете V8 (Chrome) или предстоящие Safari и FireFox, я серьезно сомневаюсь в этом;)
Мне бы хотелось увидеть, что Chess thn BTW, где IE играет с использованием Silverlight, а Chrome использует Javascript. ЧТО бы качало MSFT...!!;)