Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么.net语言的性能不同? 我听说C++最快,C是其次,其次是VB.NET,而像Python和BoO这样的语言在性能方面是最后一个。如果所有.NET语言都编译为相同的中间字节码,为什么性能会有差异_C#_.net_Performance_Programming Languages - Fatal编程技术网

C# 为什么.net语言的性能不同? 我听说C++最快,C是其次,其次是VB.NET,而像Python和BoO这样的语言在性能方面是最后一个。如果所有.NET语言都编译为相同的中间字节码,为什么性能会有差异

C# 为什么.net语言的性能不同? 我听说C++最快,C是其次,其次是VB.NET,而像Python和BoO这样的语言在性能方面是最后一个。如果所有.NET语言都编译为相同的中间字节码,为什么性能会有差异,c#,.net,performance,programming-languages,C#,.net,Performance,Programming Languages,Boo和Python可以理解,因为所有类型都必须在运行时进行评估。但是为什么C++和C语言之间的区别?< p>记住,与C语言或VB .NET不同,不是所有VisualStudio.NET创建的C++程序都使用.NETFramework。你也可以用非常快的方法创建直的C++程序。 python的解释更糟,而不是编译。它不是在运行之前转换为CIL(公共中间语言),而是在运行时转换,这显然会带来性能开销 也可以,因为IrPython是动态类型的,所以与静态类型语言相比,可以进行更少的优化(C++、C

Boo和Python可以理解,因为所有类型都必须在运行时进行评估。但是为什么C++和C语言之间的区别?

< p>记住,与C语言或VB .NET不同,不是所有VisualStudio.NET创建的C++程序都使用.NETFramework。你也可以用非常快的方法创建直的C++程序。

python的解释更糟,而不是编译。它不是在运行之前转换为CIL(公共中间语言),而是在运行时转换,这显然会带来性能开销

也可以,因为IrPython是动态类型的,所以与静态类型语言相比,可以进行更少的优化(C++、C、以及PythOngic语法,也就是BoO)。

您还必须考虑对每个实现进行优化的工作量。C++和C+.NET在微软有庞大的团队,致力于使编译器生成最快的字节码。IronPython和Boo都是志愿者项目,没有那么多的人力或资源,因此它们不会像微软资助的项目那样快速获得优化


从本质上讲,语言特性在编译时和运行时都会有性能/内存开销。这就是.NET语言在性能上不同的原因;因为它们在特性上不同。

有时看起来相当的操作实际上可能需要一些额外的工作(由编译器自动完成),以符合语言要求。例如,在VB中,有一些怪癖,比如每当你捕捉到一个异常,它就会更新;当你用“<代码>对象< /Cord>变量”做任何事情时,它调用一个拷贝,以防它是一个值类型。

到目前为止,所有答案都混淆了C++和“C++ +.net”(实际上现在被调用)——这是两种完全分离的语言。 编译为本机机器代码。C++/CLI编译为(.Net)字节码。正因为如此,C++程序往往比C++ +CLI代码快一点。C++是大约30年的,在编程世界中被广泛使用。另一方面,C++/CLI大约有10年的历史,并没有得到广泛的应用。它的主要目的是使C++程序在.NET上的翻译变得更加容易,从C++到C++/CLI比从C++到C++的工作要少得多。 在上面的一条评论中还有另一个混淆:VB6和VB.Net之间。VB6是微软的旧VB语言,现在已被弃用。它被编译成本机代码,尽管有一种普遍的信念(大部分是真的),它比C++慢。Net是微软新的VB语言,编译成CIL

现在:表演。C++通常是最快的,因为它被编译成本机代码,并且因为人们已经在优化编译器30年了。这是你通常会看到的视频游戏和其他高性能应用程序的编写语言,但是,与其他语言相比,使用它是一种痛苦

在.Net语言之间,两大语言C#和VB.Net在性能方面基本相同。虽然我没有任何基准来证明这一点,但我想C++/CLI实际上稍微慢一点,原因很简单,因为微软没有对该语言给予太多的重视,所以可能没有那么多程序员致力于优化其编译器


IronPython,因为它没有一个全职的团队来优化它的编译器,可能是速度最慢的。它也运行在上面,这只是间接的另一层。另外,另一个答案说明它被解释为一个性能杀手。

< P> C++中的C++本能,将导致比C语言中的C语言本能更快的代码,例如当循环通过数据时。当然,您可以使用不安全的C#代码来完成同样的任务,也可以在C++/cli中使用数组,但是如果您遵循相当标准的语言范例,在正确的情况下可能会有巨大的性能差异,例如,在大量数据访问的紧循环中,10比1

C++/cli中的C++范例

char * position = start;
char * end = position + data_count;
while ( position < start ) {
     { do stuff with the data )
     position ++;
}
char*位置=开始;
字符*结束=位置+数据\计数;
while(位置<开始){
{处理数据)
位置++;
}
C#范式

for(int i=0;i
使用disassembly窗口,您将看到这些文件的编译方式有多么不同


除了这些编程范例问题之外,可能还有实际的编译器问题,但我对此一无所知。

我很好奇,您所听到的关于性能的消息来源是什么。我也不会假设,因为所有.NET语言都编译到IL,所以它们都编译到相同的IL。您可以在几十个wa中执行相同的操作任何语言中的ys-IL也不例外。C#和VB之间没有性能差异。NETLanguage的性能非常主观。写得不好的CLI会比写得好的C#执行得慢。我的来源通常是各种网站上的博客和文章,请稍等,我会尝试查找它们。比较语言速度可能会有帮助有些语言在某些领域有优势,而有些语言则更快地做其他事情。程序员也有很多事情要做。我明白了。因此,C类类的委托和事件的高级特征需要更多的内存,并编译成比C++等价的更多字节代码。@ BurnPojDigy这取决于。我想象一些C语言的FEA。相比于C++的功能,REST的资源密集性更强,但我不能说出具体的功能是否更需要一些(如代表或E)。
for ( int i = 0 ; i < count; i ++ ) {
    { do stuff with data[i] )
}