Node.js如何比其他技术更快



我想读取大小为 200 MB 的文件,使用其他技术读取需要 60 秒(我使用了 java 的 Spring 引导)。 因此,正如 Node 说它是异步的,它将在文件完成读取时使用回调,那么下一步它将做什么,它会在读取文件之前直接显示成功消息还是其他操作。

我想读取大小为 200 MB 的文件,使用其他技术读取需要 60 秒(我使用了 java 的 Spring 启动)

Java 不可能需要 60 秒来读取 200 MB 的文件。 慢的不是语言或语言的实现 - 这是你的代码。

Node 不是特别快的文件 I/O 平台。 有些人甚至发现很难编程。 但看起来你碰巧写了一些快速的 Node 代码和一些缓慢的 Java 代码。

非常有趣的问题 - 虽然所有的回答都很棒,但我想谈谈问题的这一部分:"它会在读取文件之前直接显示成功消息还是它会做什么。

在这种情况下,整个想法是在设置文件读取基础结构时执行其他工作(如果有)。

如果这包括显示成功消息,是的 - 它也会这样做,但这是不合适的,因为说操作已经结束是错误的。理想情况下,人们会编写不相关的代码,并且可以按时间顺序运行,并具有文件操作的状态。Node 将在等待 I/O 时运行该代码。这就是它获得"明显"性能提升的地方 - 也就是说,我在一个线程中多路复用任务。

  • 如果应用程序中的整个活动是读取一个巨大的文件,则 Node 和 Java 之间的性能差异将不可见,因为它将摆脱语言实现细节并进入低级系统和设备操作,其中一切都以相同的方式运行,而不考虑调用者的身份。

  • 如果应用程序中的活动是一组庞大的计算,那么与Java等相比,Node的启动性能将非常差。这是因为,JS语言的动态类型将通过代码中所需的其他活动开始影响性能。

  • 如果应用程序中的活动是计算和 I/O 的自然组合,那么 Node 的性能将优于其他活动,因为前面提到的多重效应将开始可见。

此处解释了此节点行为的进一步详细说明,其中包含后台的活动

希望这有帮助。

相关内容

最新更新