为什么认为同步代码比异步代码慢得多且占用更多资源?例如,nginx被认为比Apache更快,而NodeJS应用被认为比PHP应用更快。
将同步代码编译成异步等效对象不是很简单吗?至少在JavaScript中,许多人使用诸如async之类的库来帮助编写同步外观的代码。
编辑:由于注释中的一个问题:像这样的同步代码
byte[] buf = read(socket);
do_something(buf);
之所以被认为是缓慢的,是因为线程必须阻塞才能读取socket
,而
read(socket, function(buf) {
do_something(buf);
});
被认为是快速的。一方面,转换应该是微不足道的,另一方面,两个代码都必须read
仅等待一次必须产生线程,而在另一种情况下,则必须返回到主事件循环
异步/非阻塞设计不一定会更快,但在某些情况下,它们的伸缩性可能优于同步/阻塞设计。因此,当处理大量并行事务时,它们可以“更快”。
两种方法之间的性能差异主要有两个原因。一个原因是线程上下文切换的开销,另一个原因是某些平台(例如Java)上线程的内存消耗
我最近完成了一篇文章,解释了为什么异步可以更好地扩展。希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句