Ответ да и нет. Это действительно зависит от конкретной функции, о которой вы говорите. Кроме того, существуют области, где VB выполняется быстрее. Я могу привести пример каждого из них.
Этот код в VB ...
For i As Integer = 0 To Convert.ToInt32(Math.Pow(10, 8))
Next
... о 100x быстрее, чем этого кода в C#.
for (int i = 0; i <= Convert.ToInt32(Math.Pow(10, 8)); i++)
{
}
Это не то, что VB компилятор лучше при генерации кода, который выполняет for
петли быстрее, хотя. Это то, что VB вычисляет цикл, связанный один раз, когда C# вычисляет условие цикла на каждой итерации. Это просто принципиальное различие в том, как языки были предназначены для использования.
Этот код C# ...
int value = 0;
for (int i = 0; i <= NUM_ITERATIONS; i++)
{
value += 1;
}
... немного быстрее, чем эквивалент в VB.
Dim value As Integer = 0
For i As Integer = 0 To NUM_ITERATIONS
value += 1
Next
Причина в этом случае заключается в том, что поведение по умолчанию для VB заключается в выполнении проверки переполнения, а C# - нет.
Я уверен, что существуют и другие различия на языках, которые демонстрируют сходные оценки производительности. Но оба языка построены поверх CLR и оба скомпилируются в один и тот же IL. Таким образом, создание таких правил, как «Язык X быстрее, чем язык Y», без добавления важного квалификационного предложения «в ситуации Z» просто неверно.
Дополнительные инструкции не обязательно означают более медленную программу. – ChaosPandion
Вы уверены, что логика идентична? Если они достаточно малы, можете ли вы опубликовать оба примера? –
Возможный дубликат кода [Is C# быстрее, чем код Visual Basic.NET?] (Http://stackoverflow.com/questions/1223660/is-c-code-faster-than-visual-basic-net-code) –