2014-02-20 2 views
-3

Может ли кто-нибудь связаться со мной в разнице, рассмотрев все факторы, такие как время выполнения, Efficiency.etcВ чем разница между кодом, написанным на VB.NET и C#?

Что эффективно?

+0

Его 2 разных языках, используя ту же структуру! –

+0

В чем причина проглатывания? Надеюсь, это хороший вопрос для хороших мыслителей и исследователей. Даже в этом интервью я столкнулся с этим вопросом. –

+1

В любом случае у меня нет нисходящего потока. Но я согласен с тобой, нисходящие должны объяснить причины! –

ответ

0

Не должно быть ни одного, потому что они оба скомпилируются на одном языке. Самым большим переменным фактором является программист - они могут делать вещи более круговым или неэффективным способом (например, я могу представить, что программисты VB.NET, исходящие из фона VB (A), как правило, решают проблемы, отличные от программистов на C#, исходящих из Фон C (++)).

Если вы хотите быть уверенным, возьмите кусок кода и осмотрите IL.

3

VB.NET - это «дружественный» язык программирования. Он поддерживает динамическое программирование прямо из коробки, нет необходимости явно вводить ваши переменные, например. Преобразование данных происходит автоматически. По умолчанию проверка переполнения включена. Передача свойств по ссылке просто работает. Вы можете назначить int байту без приведения. Вы можете создать многооконное приложение Winforms, не имея при этом реального понимания объектно-ориентированного программирования. Компилятор автоматически генерирует кучу кода.

Ничего из этого не происходит бесплатно. В некоторых случаях дополнительные накладные расходы могут быть очень существенными. Простое добавление двух чисел может быть в три раза дороже, чем нужно, проверка переполнения - довольно олень. Автоматические преобразования между строкой и числом являются частыми бородавками в программе VB.NET, очень дорогими. У вас мало шансов идентифицировать такое узкое место, просто глядя на исходный код.

C# намного строже, он (почти) никогда не генерирует код, который скрывает стоимость исполнения под ковриком для пола. Таким образом, он автоматически упрощает запись исполняемого кода. Это в противном случае полностью исключает необходимость использования профилировщика для идентификации бутылочной горловины.

1

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

Если вы используете Option Explicit On, Option Strict On (Option Strict On), вы не используете Option Infer, вы получите лучшие результаты за счет более сложного кода. Сложным я имею в виду, что вы должны правильно использовать свои переменные и объекты, что может считаться сложным для разработчика BASIC.

Option Strict Информация: http://support.microsoft.com/kb/311329

Вариант Infer On, не следует использовать 99,99% времени при написании новых приложений. Я бы сказал, что в 100% случаев, но у кого-то будет законная причина, я просто не могу придумать.

Опция Infer Информация: http://msdn.microsoft.com/en-us/library/bb384665.aspx

Смежные вопросы