这个后端任务cpu是否为node.js密集?

时间:2015-12-29 07:21:51

标签: javascript node.js

我正在开发一个android-app,我不确定是否使用node.js或php作为后端。

  

我有这个任务,用户提供一些查询参数(邮政编码),我执行一些数据库查询,如果我找到一些结果,我将其返回,否则我检查各种级别,如拉链,城市,地铁,州直到我发现一些非零结果。

对于node.js,这个任务是否过于密集?如上所示检查各种级别的查询会减慢node.js的单个线程吗?

判断什么任务是cpu密集型和什么不是cpu的标准是什么?

3 个答案:

答案 0 :(得分:1)

我认为你不应该担心php或节点JS。对于你所谈论的相对简单的操作而言,它们都非常快速,并且它们的开销很小。您的瓶颈更可能是SQL查询。这或多或少是独立的平台。

尝试提出一个可以一次完成的查询,而不是进行多次查询以获得所需的结果。这样,SQL优化器就可以完成它的工作,并将开销降到最低,并立即返回结果。

要测试您的cpu性能,最简单的方法是为您的代码计时。更长的时间通常等于更多的CPU密集。在应用程序完成之前获取微秒/纳秒,并在应用程序完成后获取它们,减去并了解应用程序执行的时间。 您还可以为查询计时,使用SQL优化工具来改进查询,提高查询效率。

答案 1 :(得分:0)

只有当db返回数据时才会调用db响应回调,所以在同一时间节点的线程应该可以自由地做其他事情(提供其他请求)

为了简单起见,如果你知道的话,我会坚持使用php。节点可以弯腰

答案 2 :(得分:0)

你问是否应该使用node.js或php作为问题的解决方案,但是使用“cpu intensive”作为标准。我不认为这个标准会帮助你在两者之间进行选择,至少在这种情况下。即使你真的想说“延迟”,也不会有(用户)明显的差异。

请参阅您的查询非常简单,以至于cpu使用率很可能不会成为问题。原因是执行查询时大部分的cpu时间都会丢失,这主要是由数据库而不是php或nodejs本身完成的。你最好花时间编写一个高性能的查询(这很容易)

与其他人的说法相反,对于这个略带纯粹主义的评论感到抱歉:你不应该通过测试处理事物之前和之后的时间来测试cpu强度,而不是在nodejs或php中。这有两个(主要)原因:

  • 通过这样做,您还将测量检索数据所涉及的延迟(这不是php或node.js的工作,而是数据库的工作)

  • 你不知道在测量过程中,php和node.js正在做什么'其他'。例如,可能存在正在处理的其他请求(即并发)。这在node.js中尤为明显,您可能会异步触发查询。

无论如何,考虑到涉及的查询类型和给定的情况,php或node.js之间的选择不应该基于“cpu intensivity”。尝试考虑不同的标准,例如“我能以多快的速度开发”,在这种情况下,我可能会选择php,在这个非常简单的情况下。 (注意:我是node.js的忠实拥护者,所以我很难说)