【问题标题】:Does Express make code slower?Express 会使代码变慢吗?
【发布时间】:2017-06-02 23:45:54
【问题描述】:

我听说将 Express 用于 Node 服务器会减慢代码速度。从逻辑上讲,考虑到 Express 在其依赖关系树的根部有 28 个依赖关系,这是有道理的。

不过,从统计上看,我没有发现任何证据表明这种代码变慢了。 Express 与 vanilla Node 的速度关系是否类似于 jQuery 与 vanilla JavaScript 的速度关系?是否有数据支持或反驳这一点?

编辑:没有人回答了一个实际的答案。如果您对答案感到好奇,我最终遇到了它。显然 Express 比较慢。

如果您想了解有关这些测试的更多详细信息,请参阅此link

基本上,这个人使用每种技术创建了 Hello World 应用,并计算了每个应用每秒填充了多少请求。

【问题讨论】:

  • 做一个基准测试,看看有没有 Express 有什么变化。
  • Github 上有一个病毒式回购(现已删除),作者在其中发布了一些模糊的基准。 Ruby on Rails 可以在 1 个线程时服务约 200 个请求/秒。 Node.js 每秒可以处理 17k 个请求 @ 1 个线程。带有 fasthttp 的 Golang 可以在 1 个线程时提供 122k 请求/秒。带有 Express 的 Node.js 可以在 1 个线程下每秒处理 7k 个请求。带有标准 net/http 的 Golang 可以在 1 个线程时每秒处理 36k 个请求。 µWS 可以在 1 个线程时提供 220k 请求/秒。您可以在此处阅读完整主题 - gist.github.com/brettdewoody/5ff6aa3334bec46baec5aa4c4f1f1d09,但请谨慎对待。
  • @BrettDeWoody 谢谢,我正在寻找这样的答案。

标签: javascript node.js express


【解决方案1】:

tl;博士

可能没关系。


好吧,从完全实用的角度来看,如果您要使用“vanilla Node”自己制作服务器,那么构建和部署服务器将非常困难.在该过程结束时,您最终将构建您自己的 框架,并且您自己将引入依赖项。归根结底,您真正要问的是,“我应该使用 Express 还是构建自己的框架?”

如果您从事构建自己的框架的业务,那当然可以。如果您正在寻找一种运行 Node.js 服务器的实用方法,我会坚持使用已经被 JavaScript 社区构建、测试和彻底批评的框架。

Express 与 vanilla Node 的速度关系是否类似于 jQuery 与 vanilla JavaScript 的速度关系?是否有数据支持或反驳这一点?

这并不是真正将苹果与苹果进行比较。唯一有效的比较是使用库/工具/框架或其他人(在专门开发库/工具/框架的业务中)构建它并且已经过一遍又一遍测试的想法再次。当然,在使用某些特定的 JavaScript 函数与使用封装在库提供的层中的函数(如 jQuery 的元素选择方法)之间,您可能会得到几毫秒的差异,但归根结底,成本与收益之间的差异微优化可能不值得。

坚持你知道会行得通的东西,除非你从事有目的地开发改进其他现有工具的工具的业务。

最后,如果您真的想知道,请自己运行一些基准测试,使用相同“业务功能”的 2 个版本(即执行相同操作的 2 个服务器),一个使用“vanilla Node”编写,一个使用 Express。我的直觉告诉你,在其他条件相同的情况下,你会发现性能差异非常非常小。

【讨论】:

  • 如果目标是快速开发,请使用 jQuery;如果您的目标是快速编写代码,请使用原生 JavaScript。显然,在某些情况下,jQuery 比普通 JavaScript 慢 35 倍,尽管它们正在做同样的事情 thread of this discussion。在任何情况下,我都不会考虑慢 35 倍的微优化。如果一个库有可能将代码速度减慢 35 倍,那么出于类似原因使用的框架是否可能会这样做,应该是一个问题。没有公认的数字,我们不知道。
  • 我的空间用完了,但出于类似的原因,我在暗示诸如开发速度和代码可读性之类的事情。正如我在投票最多的答案中提到的那样,我显然可以对此进行基准测试,但它不会成为被广泛接受的事实。类似于 Google 如何证明 C++ 比 Java、Scala 和 Go 更快 the report 是我正在寻找的答案类型。了解这一点可以帮助我们决定是否在生产中使用 Express of Node。
【解决方案2】:

轮胎会使汽车变慢吗?从逻辑上讲,考虑到轮胎和道路之间的摩擦力,这是有道理的。一些轮胎甚至宣传增加的摩擦力。如果我想要速度和效率,我为什么要那样!显然,最好的轮胎摩擦力最小。

当然,一辆没有轮胎的汽车不会那么有用吗?而且,在某些情况下,我们实际上可能会选择摩擦力更好的轮胎。虽然加利福尼亚的人们不需要雪地轮胎,但芝加哥的人们肯定会。

你的问题很荒谬。您基本上是在问用于不同事物的两种方法之间哪个更好。如果你不需要 Express 提供的框架,显然不要使用它。如果您这样做...可能最好采用已经过良好测试的框架,但要考虑稳定性和性能。

这是关于为工作选择正确的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2020-04-01
    • 2012-05-09
    • 2013-01-12
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多