Tag: 基准和趋势

顶级服务器端Swift框架与Node.js的更新基准测试

方法 自上次以来的变化 上一次基准测试的最大变化是,就像第一次一样,我已经切换回了macOS。 Vapor对Vapor 2.0进行了非常深入和详细的重写,我还通过触摸条将笔记本电脑升级到了2016年底的rMBP。 由于我从未遇到过产生足以进行测试的负载的问题,因此这对结果的影响应该很小。 基准测试 在每个框架的相同软件设计上执行了两个基准测试。 第一个是博客页面的表示形式,第二个是JSON数据。 它们被设计为尽可能地彼此接近,同时仍以每个框架的独特语法和样式进行本地编码。 这些旨在代表您可能会使用服务器端实现的真实场景。 它们足够复杂,不仅可以在屏幕上打印“ Hello,World!”,而且还足够有效。 源代码 与往常一样,所有这些都是通过公开的开放源代码完成的。 如果您想通读代码以了解它们是如何组合在一起的,请查看自上一篇文章以来所做的改进,或者在您自己的环境配置中重复测试,您可以在此处找到完整的源代码: https://github.com/rymcol/Server-Side-Swift-Benchmarks-Summer-2017 笔记 有几件事需要澄清和注意: Kitura和Zewo在过去的建筑物中都存在绝对文件路径中带有空格的问题。 我没有重新测试以查看是否仍然存在,只是在文件路径中没有使用任何空格。 每个框架现在都视为发行版(而非Beta版),这部分是为什么我尚未在Swift 4上进行测试的部分原因。 Zewo是单线程的,旨在以并行配置运行,这意味着计算机上的每个逻辑处理器ID都在运行一个进程。 同样,Node旨在使用群集在多个实例上运行以实现最佳性能,并且已实现。 Perfect,Vapor和Kitura是线程化的,它们管理自己的线程。 所有四个Swift框架均在发布模式下的3.1发布工具链上进行了编译。 节点无法编译。 Node.js包含在当前的稳定发行版中 如果删除任何给定框架的绒毛(功能集),而仅使用骨骼,则可能会得到更快的结果。 这次我没有做任何事情,因为我想在每个框架中进行开发,因为它已经展示出来,并且遇到它的大多数开发人员将如何使用它。 从Vapor 2开始,Vapor不再是纯粹的Swift,至少包括chttp和LibreSSL / OpenSSL。 Vapor具有用于运行发行版的特殊语法。 如果仅执行二进制文件,则将获得一些额外的控制台日志记录,这些日志记录将有助于开发和调试过程。 那有一点点开销。 要以发布模式运行Vapor,您需要添加: –env =生产 到可执行文件。 即 .build / release / Run –env = production 为什么选择Node.js / Express? 我决定将Swift与Node.js中的Express框架抗衡。 […]