(服务器端 Swift 框架)Vapor 3.0 与 2.0 在性能方面的表现如何?除了小型项目之外,这有什么严重的吗?
How is (Server-Side Swift framework) Vapor 3.0 vs 2.0 doing performance-wise? Is it anything serious other than for small-scale projects?
与 2.0、Perfect 或 Python 框架(如 Django)相比。如果可用于小型项目以外的任何东西
我假设你的问题如下:
What does Vapor 3's architectural changes mean for performance and larger projects?
我会将具体的硬性数字留给其他框架讨论。
Vapor 3 是一个为未来而设计的框架。它具有极高的性能、轻量级的内存使用、可扩展性并具有大量官方支持的功能集。
性能
虽然这些 不是 硬性数字,但我的笔记本电脑在 103k 明文 requests/second.
下测得 HTTP Engine
由于默认中间件、服务和内容系统的开销,Vapor framework 略低。它仍然非常高效,明文吞吐量为 80k requests/second。
内存使用
Vapor 3 启动时的内存开销在我的测试中介于 6.4MB 和 7.5MB 之间。这符合我测试过的Go框架。
可扩展
Vapor 3 的主要架构差异是这里的关键。我们在 Java 生态系统中致力于我们自己的 Async library that is inspired by reactive-streams.org。我们的流模型是拉流模型,其中数据不会被强加到另一个库中,而是库在准备好时请求更多数据。因为这适用于我们整个生态系统,所以无论请求大小如何,内存使用率都非常低。此规则的少数例外是(多部分)形式、JSON 和模板。模板是我们将来能够应用适当反应性的唯一库。
特点
除了 Web 框架中的反应性,我们还构建了自己的 ORM, Fluent.
Fluent 默认支持 SQLite,但也有 MySQL, PostgreSQL and MongoDB through MongoKitten.
的驱动程序
除了这些驱动程序,我们还支持 Redis。
以上所有驱动程序都支持反应流和 Codable。这些驱动程序是用 Swift 编写的,下面没有 C 库,并且针对减少的内存副本进行了高度优化。
整合
由于我们构建并维护了上述整个生态系统,因此与大多数其他框架相比,我们能够在性能和 API 方面实现更深入的集成。但是,这确实会对我们的工作量产生重大影响。
未来的证明
我们决定将我们的大部分 API 内部化,直到明确要求某个功能可以公开访问为止。这样做是为了确保对我们的实现的更改不会导致重大更改。
它可用于 medium/large 规模的项目吗?
我无法判断。我是 Vapor 3 核心团队的成员。但是,我们有一个活跃的 slack 社区,可以告诉您他们到目前为止使用 Vapor 3 的体验。我们仍处于测试阶段,因此我不会立即发布带有它的产品。
与 2.0、Perfect 或 Python 框架(如 Django)相比。如果可用于小型项目以外的任何东西
我假设你的问题如下:
What does Vapor 3's architectural changes mean for performance and larger projects?
我会将具体的硬性数字留给其他框架讨论。
Vapor 3 是一个为未来而设计的框架。它具有极高的性能、轻量级的内存使用、可扩展性并具有大量官方支持的功能集。
性能
虽然这些 不是 硬性数字,但我的笔记本电脑在 103k 明文 requests/second.
下测得 HTTP Engine由于默认中间件、服务和内容系统的开销,Vapor framework 略低。它仍然非常高效,明文吞吐量为 80k requests/second。
内存使用
Vapor 3 启动时的内存开销在我的测试中介于 6.4MB 和 7.5MB 之间。这符合我测试过的Go框架。
可扩展
Vapor 3 的主要架构差异是这里的关键。我们在 Java 生态系统中致力于我们自己的 Async library that is inspired by reactive-streams.org。我们的流模型是拉流模型,其中数据不会被强加到另一个库中,而是库在准备好时请求更多数据。因为这适用于我们整个生态系统,所以无论请求大小如何,内存使用率都非常低。此规则的少数例外是(多部分)形式、JSON 和模板。模板是我们将来能够应用适当反应性的唯一库。
特点
除了 Web 框架中的反应性,我们还构建了自己的 ORM, Fluent.
Fluent 默认支持 SQLite,但也有 MySQL, PostgreSQL and MongoDB through MongoKitten.
的驱动程序除了这些驱动程序,我们还支持 Redis。
以上所有驱动程序都支持反应流和 Codable。这些驱动程序是用 Swift 编写的,下面没有 C 库,并且针对减少的内存副本进行了高度优化。
整合
由于我们构建并维护了上述整个生态系统,因此与大多数其他框架相比,我们能够在性能和 API 方面实现更深入的集成。但是,这确实会对我们的工作量产生重大影响。
未来的证明
我们决定将我们的大部分 API 内部化,直到明确要求某个功能可以公开访问为止。这样做是为了确保对我们的实现的更改不会导致重大更改。
它可用于 medium/large 规模的项目吗?
我无法判断。我是 Vapor 3 核心团队的成员。但是,我们有一个活跃的 slack 社区,可以告诉您他们到目前为止使用 Vapor 3 的体验。我们仍处于测试阶段,因此我不会立即发布带有它的产品。