C#代码是否比VisualBasic.NET代码更快?C#代码是否比VisualBasic.NET代码更快,还是一个神话?这是一个神话。它们编译为相同的CLR。但是,同一例程的编译器在CLR中可能略有不同。因此对于某些例程,有些例程对于VB.NET可能稍好(0.0000001%),反之亦然,但它们都运行在相同的公共运行时上,因此在性能方面它们都是相同的。vb.Net中的相同代码可能比c#慢的唯一原因是VB默认为检查算术运算而c#没有。默认检查VisualBasic中的算术运算和溢出;在C#中,它们不是。如果禁用它,那么生成的IL可能是相同的。要对此进行测试,获取代码并通过Reflector运行它,如果您从c#切换到vb.Net视图,您会发现它看起来非常相似。与vb.net编译器相比,c#编译器中的优化(或只是行为上的差异)可能会导致一个稍微偏向另一个。这是:不太重要不太可能发生。c#中的某些构造在vb.net中不存在,例如不安全指针。使用时,它们可能会带来一些好处,但前提是它们实际使用得当。如果您需要这种优化,那么您应该适当地对其进行基准测试。坦率地说,如果它有很大的不同,问题不应该是“我应该使用哪个c#/vb.net”,而是问问自己为什么不将一些代码移动到C++/CLI。我认为不同的编译器可能会引入严重的、普遍的差异的唯一方法是:如果选择:在不同的地方实现尾调用更有效地实现迭代器块或匿名lambda。不必要时装箱,也许不使用受约束的操作码c#和vb.net编译器目前都具有诸如注册变量、调用约定、内联和展开之类的优化复杂性,完全取决于CLR通用JIT编译器。这可能会对其他任何事情产生更大的影响(尤其是当32位和64位JIT现在的行为完全不同时)。该框架是用C#编写的,但仍然无法区分C#或VB之间的性能差异,因为所有内容都被编译为IL,然后实际执行(包括JITted等)。责任在于每个特定的语言编译器,它们根据源代码生成什么样的IL。如果其他编译器产生比其他编译器更合适的IL,则可能会有性能差异。我不知道他们是否会在某个区域制造完全不同的IL,但我怀疑差异仍然很大。其他方面完全是C#运行不安全代码的能力,比如使用可以在特殊情况下提供性能的原始指针等。编译器优化可能略有不同,但我认为没有明显的区别。C#和VB.NET都编译为通用中间语言。在某些情况下,您可以通过使用不安全的代码在C#中获得显着的性能提升,但在大多数情况下我不推荐这样做。如果你需要一些性能关键的东西,你也不应该使用C#。这个神话可能是由于VisualBasic6与普通C++应用程序相比在性能上的巨大差异。这取决于你在做什么。我认为VB和C#之间没有真正的区别。都是.Net语言,都是用IL编译的。更多信息?阅读:http://devlicio.us/blogs/robert_dunaway/archive/2006/10/19/To-use-or-not-use-Microsoft.VisualBasic.dll-_2800_all-.NET-Languages-could-benefit_3F002900_。aspx我参加了一次Microsoft会议,MS人员声称C#比VB.NET快8%。所以如果这是一个神话,它是由在MS工作的人开始的。如果我能找到说明这一点的幻灯片,我会发布它们,但那是C#刚刚问世的时候。我认为即使它在某个时间点确实如此,一个比另一个更快的唯一原因就是像ShuggyCoUk所说的默认配置。像往常一样,答案是它取决于...本身,不,VB.Net并不比C#慢,至少您不会注意到。是的,编译器优化存在细微差别,但生成的IL基本相同。但是,VB.Net为VB6兼容程序员提供了一个兼容库。我记得像left、right、center这样的字符串方法,这是老VB程序员所期望的。那些字符串操作函数比较慢。我不确定您是否会注意到效果,但根据使用强度,我敢打赌答案是肯定的。为什么这些方法比“本机”.net字符串方法慢?因为它们的类型安全性较低。基本上,你几乎可以扔任何东西,他们会尝试做你想做的事,就像在旧的VB6中一样。我正在考虑字符串操作,但如果我认为它更难,我相信我会记得更多的方法被扔进那个兼容层(我不记得程序集的名称,但记住它在默认情况下被引用VB.Net)如果您使用它而不是它们的.net“本机”等价物,将会对性能产生影响。所以,如果您继续像VB6一样编程,那么您可能会注意到一个效果。如果没有,没关系。生成的代码中存在一些细微差别,在某些情况下可能会使C#稍微快一些。例如,VB.NET有一些额外的代码来清除方法中的局部变量,而C#则没有。然而,差异几乎无法衡量,而且大多数代码都不是最优化的,只是通过切换语言让代码运行得更快开始。您可以使用任何CPU密集型代码,并且可以轻松地将其加倍。有些代码可以快10倍,有些代码可以快10000倍。在这种情况下,使用C#而不是VB.NET可能获得的百分之几是不值得的。另一方面,学习C#可以成为加速代码的有效方法。不是因为C#会生成更快的代码,而是因为您会更好地理解C#和VB.NET,从而使您能够编写在任何一种语言中都表现更好的代码。编辑:C#和VB.NET编译器显然或多或少是同时开发的。C#1和C#2之间的速度差异约为30%,而C#和VB.NET的并行版本之间的差异要小得多。这不是神话。虽然C#和VB.Net都编译为IL,但实际生成的指令可能会有所不同,因为1.编译器可能有不同的优化,以及2.VB.Net默认执行的额外检查,例如算术溢出。所以在很多情况下,性能是相同的,但在某些情况下,C#会更快。在极少数情况下,VB.Net也可能更快。C#和VB.Net都是从IL编译而来的。C++和F#也是由它编译的。事实上,我提到的四种语言的执行速度是一样的。这些“更快的语言”没有:唯一的区别在于自动进行垃圾收集的语言(C#、VB.Net、F#等)和不进行垃圾收集的语言(如C++)。第二组通常较慢,因为开发人员很少知道如何以及何时在堆内存中收集垃圾,但是,如果您了解堆内存,您的程序在C++中会更快。硬图形程序通常是用C++编写的(就像大多数Adob??e程序一样)。您还可以在C#(System.GC.Collect();)和VB.Net(System.GC.Collect)中手动收集垃圾。我知道这个问题的答案并不完全是固有的,但我想为您提供很多方法和选择。您为程序选择了正确的方法。以上是C#学习教程:C#代码比VisualBasic.NET代码快吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
