我正在开发一个android-app,我不确定是否使用node.js或php作为后端。
我有这个任务,用户提供一些查询参数(邮政编码),我执行一些数据库查询,如果我找到一些结果,我将其返回,否则我检查各种级别,如拉链,城市,地铁,州直到我发现一些非零结果。
对于node.js,这个任务是否过于密集?如上所示检查各种级别的查询会减慢node.js的单个线程吗?
判断什么任务是cpu密集型和什么不是cpu的标准是什么?
答案 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的忠实拥护者,所以我很难说)