我的Beta2 Framework 版本是v1.0.2914,VB.NET的IL里已经没有nop指令了。
vbc test.vbs
vbc /optimize+ test.vbs
结果相同
我相信这只是Beta阶段的一点困难而已,M$最终能够从VB.NET中去掉的。至于VB.NET和C#性能的比较,参见:
http://www.csdn.net/develop/article%5C11%5C11483.shtm
和下面我的评论。:)
vbc test.vbs
vbc /optimize+ test.vbs
结果相同
我相信这只是Beta阶段的一点困难而已,M$最终能够从VB.NET中去掉的。至于VB.NET和C#性能的比较,参见:
http://www.csdn.net/develop/article%5C11%5C11483.shtm
和下面我的评论。:)
Microsoft (R) Visual Basic.NET Compiler version 7.00.9254
for Microsoft (R) .NET CLR version 1.00.2914.16
.method public static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 14 (0xe)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "This is VB"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: nop
IL_000d: ret
} // end of method Module1::Mainnop依然存在。
VS.NET 版本是7.0.9447
Framework的版本是1.0.3617
怎么获得CLR,和Compiler的版本?
经过我的测试,If语句,While语句VB实现得比C#好,Try语句,Select语句C#实现得比VB好。总的来说无所谓啦!
Visual Basic.method public static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 11 (0xb)
.maxstack 8
IL_0000: ldstr "This is VB.net"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method CMain::MainVisual C#.method public hidebysig static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 11 (0xb)
.maxstack 1
IL_0000: ldstr "This is C#"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method Class1::Main完全一样!!另外一个值得注意的问题是VB会自动添加STAThread属性优化,C#却不会。这是源代码
Public Class CMain
Public Shared Sub Main()
'Output something
Console.WriteLine("This is VB.net")
End Sub
End Classclass Class1
{
[STAThread]
public static void Main()
{
Console.WriteLine("This is C#");
}
}