(Server-Side Swift框架)Vapor 3.0 vs 2.0如何在性能方面做得如何?除了小规模项目之外,还有什么重要的吗?

时间:2018-01-29 19:48:43

标签: swift vapor

与2.0相比,完美,或像Django这样的Python franeworks。如果可用于小规模项目以外的任何事情

1 个答案:

答案 0 :(得分:16)

我假设你的问题如下:

  

Vapor 3的架构变化对性能和大型项目意味着什么?

我会在讨论中将特定的硬编号留给其他框架。

Vapor 3是一个专为未来而设计的框架。它具有极高的性能,内存使用量轻,可扩展,并具有大量官方支持的功能集。

性能

虽然这些不是硬数字,但我的笔记本电脑以每秒103k的明文请求量度HTTP Engine

由于默认中间件(服务和内容系统)的开销,Vapor framework略低。它仍然真正具有80k请求/秒的明文吞吐量。

内存使用

启动时Vapor 3的内存开销在我的测试中介于6.4MB和7.5MB之间。这与我测试的Go框架一致。

可扩展的

Vapor 3的主要架构差异在这里是关键。我们在自己的Async library上工作,受到来自Java生态系统的reactive-streams.org的启发。我们的流模型是一个拉流模型,其中数据不会强制在另一个库上,但是库在准备好时会请求更多数据。因为这适用于整个生态系统,所以无论请求的大小如何,内存使用率都会保持很低。此规则的少数例外是(多部分)表单,JSON和模板。模板化是我们将来能够应用适当反应性的唯一库。

功能

除了Web框架中的反应性,我们还构建了自己的ORM, Fluent.

Fluent默认支持SQLite,但也有MySQLPostgreSQLMongoDB through MongoKitten的驱动程序。

除了这些驱动程序,我们还获得了对Redis的支持。

以上所有驱动程序都支持反应流和Codable。驱动程序是用Swift编写的,下面没有C库,并且针对减少的内存副本进行了高度优化。

集成

由于我们构建并维护了上述整个生态系统,因此我们能够在性能和API方面实现比大多数其他框架更深层次的集成。但是,这确实会对我们工作量的大小产生重大影响。

未来证据

我们决定将大部分API内部化,直到明确要求公开可访问的功能为止。这样做是为了确保我们实现的chages不会导致重大更改。

是否可用于中型/大型项目?

我无法做出判断。我是Vapor 3核心团队的成员。但是,我们有一个活跃的社区,能够告诉你他们到目前为止使用Vapor 3的经历。我们还处于测试阶段,因此我暂时不会发布该产品。