techempower是一个Web Framework Benchmarks测试平台,世界上各大Web框架都参与其中,当然BeetleX也不例外。接下来的几篇文章中讲述aspcore使用怎样的方式在这评测中获取相对比较高的分数;而BeetleX使用了这些技巧之后也在是近测中获取的前10,仅次于aspcore,努力总会有回报相信在不久就能越aspcore。
以上是 2021-01-28的测试结果。如果你也是写Web框架,也希望能在techempower获取不错的得分,那这一系列的讲解对你来说一定有很大的帮助。
划重点
techempower会对Web框架进行多项功能测试,你需要获取综合评分那就必须所有测试项都要完成才能得取综合排名。但测试的规则就如同我们的考试一样,并不是每项的测试分数都一样的。你是全能冠军那没什么需要注意的,否则需要考虑那个项的占比重和投入回报比了。
以上是多项测试的权重占比情况,在占比低的项中即使投入大量的时间拿了很高的分数也没有多大意义。从上面权重分配表来看,你只需要在DATA UPDATES和MULTIPLE QUERIES中付出少量的时间即可获取一个不错的分数;对于PLAINTEXT即使拿个第一也不会对着综合分数带来很大的影响,毕竟权重分太低了,投入的时间优化收益比非常低。
理清规则
测试项权重比知道了,同样测试规则也需要了解清楚;相信大家都知道不同规模的代码测试出来的性能结果总是有差异的,对于techempower来说它不关心测试框架的规模,主要测试的输入和输出是否满足它的要求即可;如果你想一份代码就能得到一个综合好的评分很难在这里获取好的排名,毕竟不同场景都有针对性代码优化。
aspcore为了在这里得到更好的排名也是使用多种测试实现的策略,测试的规模有aspcore,aspcore-mv和aspcore-mvc;如果用实际应用所使用的aspcore-mvc那我相信很难排到前50名。Beetlex为了得到排名同样也使用了这种策略机制,分别使用了beetlex和beetlex-core两种不同复杂度的框架进行测试拿分。
代码技巧
有时候为了获取比较高的分数需要一些非常正常的代码手段,简单来说这些编写方式在实际应用比较少用,都为了当前测试需求而编写;虽然这些技巧对测试结果不会有一个质的飞跃,但对测试结果的提升还是有很大帮助;这些描述包括有控制线程队列,合并IO,对象池等等。
总结
在后面的文章中会针对以上几点对相关测试用例进行一个分析和讲解,了解一下aspcore是如何通过不同方式来应对techempower测试。最终你会发现凭借那几点即可以得到一个不错的测试成绩。
BeetleX
开源跨平台通讯框架(支持TLS)
提供高性能服务和大数据处理解决方案
https://beetlex.io