C#ASP.NETMVC3的性能优于RubyonRails3,Django?

C#ASP.NETMVC3的性能优于RubyonRails3,Django?,c#,ruby-on-rails,asp.net-mvc,django,C#,Ruby On Rails,Asp.net Mvc,Django,我正在考虑为高性能web应用程序设计一个性能快速、可扩展的平台,该应用程序还大量使用数据库。在我看来,自然的方法是选择一些MVC框架,比如Rails、.NETMVC或Django。我对Rails和.NET都有经验,但对Python没有经验。就我的个人测试而言,C#with.NETMVC3在大多数情况下都优于RubyonRails3(对于Rails,我使用unicorn和nginx实现http)。有人对此有一些看法,或者我的测试有误吗?任何带有数字和解释的例子都将不胜感激。谢谢大家! Django

我正在考虑为高性能web应用程序设计一个性能快速、可扩展的平台,该应用程序还大量使用数据库。在我看来,自然的方法是选择一些MVC框架,比如Rails、.NETMVC或Django。我对Rails和.NET都有经验,但对Python没有经验。就我的个人测试而言,C#with.NETMVC3在大多数情况下都优于RubyonRails3(对于Rails,我使用unicorn和nginx实现http)。有人对此有一些看法,或者我的测试有误吗?任何带有数字和解释的例子都将不胜感激。谢谢大家!

Django有很多智能缓存机制。此外,它还鼓励使用干燥剂,通常会导致代码更干净、混乱程度更低,从而降低性能。还可以很容易地配置要挂接到每个请求过程中的中间件类型


因此,我的论点不是说Django一定比ASP.NET快,而是说人们编写的项目更好,最终会更快。

在选择webframework时,性能不应该是一个破坏交易的因素,至少在选择这3个框架时是如此,这3个框架在战场上得到了验证

如果你只考虑语言速度,C是静态类型和JIT编译的,则总是最快的。接下来将是Python(特别是如果您在PyPy上运行Django,PyPy也有一个JIT,但还没有那么成熟),Ruby将是最慢的(一直如此,尽管它在改进)

除了语言之外,数据库本身也扮演着重要的角色,所以这很大程度上取决于给定框架使用的ORM。同样,实体框架(您可能正在与ASP.NET MVC一起使用)将是最难低效使用的,因为延迟加载不是常见的做法,而且数据库模型通常是手工创建的。另一方面,在Django中,您使用Python编写模型,这有时可能过于笼统

不要忘记,当数据库起到关键作用时,适当的缓存始终是影响性能的关键因素。与ASP.NET MVC相比,Django和RoR是全堆栈框架,可以为您提供更多现成的选项,因为它们知道所有关于模型的需要

编辑:如果您想要纯语言速度比较,请查看
阅读所有免责声明(这是在特定解释器/编译器实现上运行的特定算法实现的基准,因此这只是这些实现的基准),但请记住,在那里测试的C#实现是开源Mono版本,肯定比原始MS堆栈慢。因此,您可以看到的差异(c#实现速度比Ruby快79倍)可能更大。

至少在Rails和Django方面,后者显然更快


有了ASP.NET MVC,它看起来更像是有某种阴谋,因此实际上没有人尝试对其进行基准测试:)

您介意更精确地阐述您的个人测试内容吗?例如,显示您在这两个平台上使用的测试代码和获得的结果?至于初始条件,我使用数据库生成一些表数据,如100K-1M记录和一些不太复杂的代码,以便将值作为网页输出(使用ERB For Rails)。然后,作为一个基准,我使用apachebenchmark(ab)和seake来生成相应的每秒页面数和延迟数据。不幸的是,由于合适环境的可用性有限,无法在100%相同的条件下测试两者,所以这里没有数字或代码。因此,如果有人用更“科学”的方法来尝试类似的东西,这个问题就来了。谢谢。我认为它们或多或少都支持一些缓存,毕竟您甚至可以使用Varnish之类的反向代理缓存整个页面,但问题更像是关于这些框架的功能。这些是如何比较的。如果不使用缓存,所有内容都是动态生成的。正如您所说,总会有聪明的性能解决方案(如Varnish)。我使用Django,但我从不太在意性能,因为有无数的调整。这就是说,我确实尽我所能地配置我的系统,但我认为我的代码设计是圣杯,这就是我发现Django远优于.NET、PHP等的地方。你可以在这里看到一个基准比较,它排名Django最高:谢谢!这一点印证了我对这个话题的个人印象。C#的确似乎是其中最快的。然而,您是否考虑过可编译的Ruby代码?另外,仍然没有确切的数字…添加了确切的数字(通过Lanugage基准链接)。你说的可编译Ruby代码是什么意思?我喜欢新的编辑更新。链接不错。从数学上证实了我的印象n-body测试——Ruby测试28分钟,C#测试35秒。太大了!就连PHP也比它快了15分钟。似乎C#的性能是闪电般的快,只有被纯C/C++实现打败,但即使有差异也只有30%。奇怪的是,Python在20分钟内表现如此糟糕。我想他们已经进行了一些优化。请再说一次,在出现这样的结果之后,性能不应该成为破坏交易的因素?@SSpeedy——对于典型的Web应用程序,我要再说一次,因为:1)Web应用程序受IO限制-网络延迟将始终比CPU时间大一个数量级2)通常你可以缓存很多,但对于长时间运行的后台进程,情况并非如此,这些进程通常在RoR项目中是用Java/Scala等实现的。因此,不要忘记性能,但要记住其他因素,如Rails和Django的全栈框架相对于ASP.NET MVC的生产力网络延迟、流量、浏览器缓存这些问题都是无关紧要的。我关心的是框架本身的生产力。