Какова разница в скорости между языками DLR и C# в Silverlight 2?

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

Вопрос

Для Silverlight 2 варианты программирования выглядят следующим образом:

  • С#
  • ВБ
  • Языки сценариев DLR
    • ЖелезоРубин
    • ЖелезоПитон
    • К сожалению, забытый (если не отмененный) управляемый jScript

Является ли это тем случаем, когда родные языки (C# и VB) на порядок быстрее, чем языки DLR?

Есть ли надежда «жить» в IronPython, когда я занимаюсь клиентским программированием Silverlight, или мне стоит рассчитывать на C# для работы с интенсивным использованием процессора?

Мой обзор языков взят из этот набор примеров для C# и VB и на этой странице обсуждается DLR.

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

Решение

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

Да, в общий VB.Net и C# будут быстрее, чем языки на основе DLR.Статические языки выполняют больше работы во время компиляции, например привязку метода.Этот тип работы должен выполняться во время выполнения для языков на основе DLR, и, следовательно, во время выполнения они требуют немного больше затрат.

Однако предстоит много работы по оптимизации DLR и языков, основанных на DLR.Большая часть этой работы смягчается различными кэшами и т. д.Во многих типах приложений разница в производительности будет незначительной.

Я бы не исключал язык, основанный на DLR, основанный исключительно на производительности, если бы профилировщик не сказал мне, что это действительно проблема.

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

Обычно оптимизация алгоритма дает гораздо больший эффект, чем переписывание на статическом языке.

Возможно, вас заинтересует Показать № 429 .NET Rocks, интервью с Майклом Фурдом.Вот соответствующий отрывок из стенограмма:

Динамические языки намного проще тест, они действительно подходят для Meme it Тестовый подход к разработке, который разработчики принимали на это Meme it время.Но я предполагал, что для производительности причины, они бы переписать в C# в какой-то момент, и то три и немного лет спустя мы Meme it получил 40 000 строк кода IronPython, у нас есть около 140 000 строк в тестовый код, у нас есть какой-то тип около 300 строк C# и каждый раз они приходят посмотреть спектакль, каждый раз, когда они приходят и говорят найти Meme it операция, которая не работает быстро достаточно, мы смогли получить Meme it скорость, которая нам нужна, улучшая наши алгоритмы, улучшая наш Python код и не нужно падать в C#, и причины, по которым программы работают медленно обычно не виноват язык, это вина программиста, разработчик.

Также вы можете использовать Boo.Вот образец Silverlight Тетрис с Бу

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