Производительность между языками .NET

Может ли использование нескольких языков .NET (Delphi, VB.NET, C#) в одном приложении (но, конечно, в другой библиотеке классов) вниз выступления по сравнению, например, с полное приложение C#?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
233
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Без каких-либо веских доказательств этого, я просто сделаю обоснованное предположение и скажу «нет». Поскольку ваши сборки компилируются до почти идентичного IL, вы действительно не увидите какого-либо снижения производительности из-за использования различных реализаций языка CLR.

Но это с одним ограничением: компиляция разных языков dotnet в MSIL одинакова. Я имею в виду, что разные компиляторы действуют одинаково.

Ahmed Said 04.01.2009 14:40
Ответ принят как подходящий

Я не эксперт по CLR, но предполагаю, что у вас будет очень похожая производительность. Все языки компилируются в MSIL, который работает в среде CLR. Возможны различия в производительности в зависимости от MSIL, созданного компиляторами. т.е. возможно, что аналогичный код в VB.NET будет компилироваться в менее (или более) оптимизированный MSIL, чем компилятор C#.

Согласовано. В некоторых случаях может быть действительно полезно использовать язык, который лучше всего решит набор проблем конкретной подсистемы. Например, использование F# для высокопараллельной вычислительной программы.

Josh 04.01.2009 06:34

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

Одно место, где это было бы иначе, - это языки, которые работают в DLR (IronPython, IronRuby и т. д.). Они компилируются с использованием некоторых функций, которых нет в CLR и которые требуют более затратных операций.

Как уже упоминалось в других ответах, весь код завершается компиляцией до CIL, поэтому при условии, что код выполняется последовательно на разных языках (и у вас не включена оптимизация компилятора), результирующий IL будет довольно идентичным. Теперь, если у вас есть тот же код и вы используете оптимизацию компилятора, вы можете получить другой набор IL, который повлияет на производительность.

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

Я согласен с другими ответами. Единственное, что может повлиять на производительность, - это то, что если вы загружаете много сборок, вы увидите накладные расходы. Однако накладные расходы не связаны с языком, используемым для создания сборки, но если вы смешиваете много разных компонентов, вы можете получить больше сборок, чем в противном случае. Если это не относится к вашему приложению, все должно быть в порядке.

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