应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此。此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚。在选择框架时,又有许多因素需要考量,但原始性能无疑是其中最容易测评的。不同的框架性能差异极大,即使你充分利用了硬件的性能,错误的框架依然可能带来十倍的性能损耗,虽然不是每个人都会遇到如此极端的情况,但在某些情况下确实如此,因此你有必要了解各框架之间的性能差异。
TechEmpower 测试有源代码,硬件配置全部公开的测试,而且很多框架是作者或资深爱好者提交的,他们各自肯定知道该如何优化才最好,应该比较靠谱,因为这些结果都是可重现的,谁觉得不服可以自己跑跑看,源代码和需求页面提供了每种测试的执行细节以及其它相关信息,各种Web框架性能对比页面提供了更多有关如何进行测试的细节与测试基准的概况。TechEmpower 主要测试的目的是将目前流行的Web开发框架从各个角度来进行测试,这些测试的场景主要是针对这些Web执行框架的基本任务,比如数据库访问、JSON序列化和服务端模板的组合等等场景。整体得分还是有借鉴作用的。当然这种测试主要的作用还是提升士气用的。Techempower网站已经做了13轮的常用web框架的测试,它提供了2种硬件环境(硬件平台包括Azure D3v2 Instance 和专用硬件【Dell R910 application server (4x 10-Core E7-4850 CPUs) 和 a Dell R420 database server (2x 4-Core E5-2406 CPUs)】),几种测试case测试,内容包括单请求数据库访问测试、多请求数据库访问测试、Fortunes测试、JSON序列化测试;得出了一系列的web框架的性能基准。 对于架构师而言,这是一个很好的评估选择web框架的参考资料。
我们看看各个web框架的性能,以TPS为指标排序(每秒返回的response多的在前面,性能越好),所有测试都在Linux中运行。在对比中,我们看到ASP.NET Core取得优异的成绩,具体6个回合的对比请移步TechEmpower查看:
- 响应返回”Hello, world!”的JSON字符串
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=json - 从数据库读取一行记录并返回
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=db - 从数据库读取多行记录并返回
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=query - 从数据库读取整个表记录并返回
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=fortune - 修改数据库记录并返回
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=update - 响应返回”Hello, world!”的纯文本
测试结果见:http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=plaintext
下面是返回纯文本Plaintext的性能基准:
第六回 Azure D3v2 Instance PlainText 访问测试(峰值)
第六回 专用硬件 PlainText 访问测试(峰值)
从开发者的角度来讲,.NET Core在吸收了Mono的优点以后,以一种全新的姿态面向世人,这个转变是值得期待的,而在这个转变中涌现出的新技术、新特性等等,也是我们真正该去关注的东西。相比11轮的asp.net mvc在Mono平台上的表现,ASP.NET Core每秒1822366个请求,这是一个大约提高859倍的提升。