Есть ли у Silverlight преимущество в производительности перед JavaScript?

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

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

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


person Guy    schedule 26.11.2008    source источник
comment
Кто-нибудь обновил этот тест для последней версии Chrome vs Silverlight 4?   -  person Adam Rackis    schedule 17.12.2010


Ответы (10)


Спекуляции — это весело. Или мы могли бы на самом деле попробовать тест или два...

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

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

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

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

person Jon Galloway    schedule 30.11.2008
comment
Последние цифры Bubblemark для Silverlight 3.0 (с включенным кэшированием растровых изображений) показывают, что Silverlight довольно легко побеждает Flash и JavaScript с разумным отрывом. - person Ken Smith; 22.03.2010

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

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

person FlySwat    schedule 26.11.2008

Я бы сказал, что с архитектурной точки зрения это провал.

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

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

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

person Wedge    schedule 26.11.2008

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

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

EDIT: После некоторых исследований я обнаружил, что вы можете взаимодействовать с DOM в Silverlight. Я не думаю, что это можно рассматривать как хорошую замену Javascript, если не учитывать проблемы с производительностью, если только вам не требуется интенсивное взаимодействие на стороне клиента. Я вижу два основных недостатка:

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

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

person Franck    schedule 26.11.2008

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

Сравнение пузырьковых меток по браузерам и Javascript и Silverlight

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

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

person TJB    schedule 15.02.2009

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

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

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

person Community    schedule 26.11.2008

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

person Alok    schedule 19.02.2010
comment
Silverlight действительно имеет преимущество, будучи продуктом Microsoft. По этой ссылке вы найдете больше байты - person vaibhav; 15.06.2012

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

person Thanigainathan    schedule 27.01.2011

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

person Thanigainathan    schedule 27.01.2011

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

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

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

person Thomas Hansen    schedule 26.11.2008
comment
Я использую Chrome, но не думаю, что это особенно полезный выбор для сравнения, поскольку доля рынка очень мала. - person TM.; 15.02.2009