你认为两者都是一样的.
但也许它是微软使用的编译器,但我注意到在编译两个非常小的程序时,相同的逻辑.VB.NET使用更多的IL指令.
是否真的比c#必须更快,只是因为它的编译器更聪明.
Jar*_*Par 15
有限的可用信息确实很难对此做出明确回应.如果您提供了样本和使用的编译器选项的代码,那将会有很大帮助.
但要回答这个问题,没有C#本身就不会更快.两种语言都生成IL并在CLR上运行.对于大多数功能,他们甚至生成相同的IL.某些类似功能存在差异,但它们很少会导致显着的性能变化.
如果遇到语言和环境中的一些细微差别,VB可能会显得较慢.一些常见的例子是......
switch并Select具有相同的语义删除这些语言后,语言将以非常相似的性能配置文件执行.
Bri*_*eon 11
答案是肯定的,不是.这实际上取决于您所指的具体功能.同样,有些地方VB执行得更快.我可举一个例子.
VB中的这段代码......
For i As Integer = 0 To Convert.ToInt32(Math.Pow(10, 8))
Next
Run Code Online (Sandbox Code Playgroud)
...比C#中的代码快大约100倍.
for (int i = 0; i <= Convert.ToInt32(Math.Pow(10, 8)); i++)
{
}
Run Code Online (Sandbox Code Playgroud)
并不是VB编译器更好地生成for更快执行循环的代码.这是VB计算一次循环绑定,而C#计算每次迭代的循环条件.这只是语言使用方式的根本区别.
这段代码是C#...
int value = 0;
for (int i = 0; i <= NUM_ITERATIONS; i++)
{
value += 1;
}
Run Code Online (Sandbox Code Playgroud)
...比VB中的等效物快一点.
Dim value As Integer = 0
For i As Integer = 0 To NUM_ITERATIONS
value += 1
Next
Run Code Online (Sandbox Code Playgroud)
在这种情况下的原因是VB的默认行为是执行溢出检查,而C#不执行.
我确信在演示类似性能偏差的语言中还有其他差异.但是,这两种语言都建立在CLR之上,并且都编译为同一个IL.因此,如果不添加重要的限定条件"在情境Z"条款中,制作诸如"语言X比语言Y快"的一揽子陈述是完全错误的.
C#匹配比VB.NET更接近IL
VB.NET有时在幕后做很多事情.像On Error Resume Next,为每个语句编写一个try catch
但总的来说两者都具有相同的功能和性能.
您可以在Reflector中打开代码并查看为C#代码.意识到C#代码是否符合您的预期