Есть ли у Silverlight преимущество в производительности по сравнению с JavaScript? - PullRequest
14 голосов
/ 27 ноября 2008

В недавнем обсуждении Silverlight преимущество скорости было затронуто. Аргументом для Silverlight было то, что он работал лучше в браузере, чем Javascript, потому что это скомпилированный (и управляемый) код.

Затем было заявлено, что это преимущество применимо только к IE, поскольку IE интерпретирует Javascript, который неэффективен по сравнению с другими браузерами, такими как Chrome и FireFox, которые компилируют Javascript в машинный код перед выполнением и, таким образом, работают так же, как и Silverlight.

Есть ли у кого-нибудь однозначный ответ на этот вопрос о производительности? то есть, будут ли Silverlight и Javascript иметь сопоставимую производительность в Chrome и Firefox?

Ответы [ 10 ]

19 голосов
/ 30 ноября 2008

Размышлять - это весело. Или мы могли бы попробовать один или два теста ...

То, что Пример шахмат Silverlight против Javascript было обновлено для Silverlight 2. Когда я запускаю его, C # в среднем составляет 420 000 узлов в секунду против Javascript со скоростью 23 000 узлов в секунду. Я использую ветку разработчика Google Chrome (v. 0.4.154.25). Это все еще почти 18-кратное преимущество для Silverlight.

Расчет простых чисел показывает 3-кратное преимущество для Silverlight: вычисление 1 000 000 простых чисел в Javascript занимает 3,7 секунды, в Silverlight - 1,2 секунды.

Так что я думаю, что для расчета все еще есть довольно сильное преимущество для Silverlight, и я чувствую, что он, скорее всего, останется таким. Обе стороны продолжат оптимизацию, но существуют некоторые ограничения для оптимизации на динамическом языке.

Silverlight не имеет (пока) преимущества в анимации. Например, тест Bubblemark показывает, что Javascript работает со скоростью 170 кадров в секунду, а Silverlight работает со скоростью 100 кадров в секунду. Я думаю, что мы можем ожидать увидеть это изменение , когда выйдет Silverlight 3, поскольку он будет включать поддержку графического процессора .

4 голосов
/ 27 ноября 2008

Javascript запускается на виртуальной машине большинством браузеров. Тем не менее, Javascript по-прежнему является забавным языком, и даже «быстрая» виртуальная машина, такая как V8, невероятно медленная по современным стандартам.

Я бы ожидал, что CLR будет быстрее.

2 голосов
/ 15 февраля 2009

После проведенного беглого тестирования Silverlight работает быстрее. Вот некоторые интересные результаты, которые я собрал с http://bubblemark.com/

Bubblemark comparisons by browser and Javascript vs. Silverlight

В общем, Silverlight был намного быстрее, но реализация Chrome на JavaScript разорвала всех остальных на куски!

Имейте в виду, что это только на одной машине, на одной ОС (XP) и т. Д. Вам нужно будет сделать гораздо более обширные тесты для достижения большего.

2 голосов
/ 27 ноября 2008

Я бы сказал, что архитектурно, это мытье.

С одной стороны, Silverlight - это код MSIL, который является достаточно быстрым по сравнению с необработанным, оптимизированным собственным кодом, но все еще работает медленнее из-за накладных расходов виртуальной машины (CLR) и по-прежнему будет иметь низкое начальное время загрузки при работе с ngen'd.

С другой стороны, скорость Javascript гораздо менее надежна из-за огромных различий в механизмах Javascript, которые имеют диапазон производительности на порядок или более. У вас есть медленные интерпретаторы, такие как IE, хотя IE8 ускоряет работу, а затем у вас есть более быстрые компиляторы / интерпретаторы, такие как SpiderMonkey и V8, которые только недавно начали исследовать ограничения производительности Javascript. Есть также новые технологии в фазе R & D, такие как TraceMonkey, которые имеют огромный потенциал для значительного улучшения производительности Javascript (приближаясь к скорости собственного кода). Javascript имеет недостаток, заключающийся в том, что он однопоточный, но, учитывая сложность написания хорошего многопоточного кода, трудно сказать, насколько это важно.

В конце дня, сравнивая яблоки с яблоками, реальным узким местом производительности является DOM, и там не имеет большого значения, какую технологию вы используете для манипулирования им.

2 голосов
/ 27 ноября 2008

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

Сравнение Flash и Silverlight с точки зрения производительности показалось бы мне более полезным.

РЕДАКТИРОВАТЬ: После некоторых исследований я обнаружил, что вы можете взаимодействовать с DOM в Silverlight. Я не думаю, что это можно рассматривать как хорошую замену Javascript, за исключением проблем с производительностью, если у вас нет необходимости в интенсивном взаимодействии на стороне клиента. Я вижу два основных недостатка:

1) Вы заставите своих пользователей загружать приложение Silverlight, а не полагаться на сравнительно небольшой файл .js.

2) Ваши пользователи должны установить Silverlight перед использованием вашей страницы.

0 голосов
/ 27 января 2011

Как abt HTML5. Думаю, при сравнении производительности javascript HTMl играет серьезную роль. Поэтому мы определенно должны сравнить производительность, используя HTML5 + javascript и Silverlight.

0 голосов
/ 27 января 2011

Платформы должны рассматриваться здесь. Как Silverlight работает в Lnux, Solaris или Mac - действительно большой вопрос!

0 голосов
/ 19 февраля 2010

Похоже, что реализация Chrome на JavaScript быстрее, чем Silverlight

0 голосов
/ 27 ноября 2008

Я бы сказал, да, так как он имеет .NET CLR. При этом, учитывая недавние разработки в JavaScript, реализованные в Google Chrome, и в еще не полностью выпущенном Firefox 3.1, можно попробовать провести собственный тест; Я пока не знаю ни одного сравнения. (Кто?)

Тем не менее, на мой взгляд, .NET должен быть в целом быстрее, чем Javascript, и, как было отмечено ранее, это не ускорит работу сети. Следовательно, для сложных алгоритмов SilverLight будет работать быстрее, но для сетевых запросов у вас может не быть заметной разницы.

В вопросе о производительности вы можете взглянуть на Flash 10, который позволяет использовать код на языке c / c ++ с использованием "Alchemy". Это может быть более портативное решение, чем SilverLight.

0 голосов
/ 27 ноября 2008

Sre, если вы используете "Internet Exploder", это, вероятно, будет ...

Если вы используете V8 (Chrome) или грядущий Safari и FireFox, я в этом серьезно сомневаюсь;)

Мне бы очень хотелось увидеть, что Chess thn BTW, где IE играет с использованием Silverlight, а Chrome использует Javascript. ЧТО бы рок MSFT ... !! ;)

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