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

时间:2016-04-28 05:42:27

标签: node.js

我想读取大小为200 MB的文件,用其他技术读取需要60秒(我使用的是java的Spring启动)。所以当节点说它是异步的时,它将在你的文件读完时使用回调,这样它下一步将会做什么,它会在读取文件之前直接显示成功消息还是它将做什么。

2 个答案:

答案 0 :(得分:0)

  

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

Java无需60秒即可读取200 MB文件。它不是语言或语言的实现速度慢 - 它是您的代码。

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

答案 1 :(得分:0)

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

在这种情况下,整个想法是在设置文件读取基础设施的同时进行其他工作。

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

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

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

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

here

解释了此节点行为的详细解释

希望这会有所帮助。