繁体   English   中英

并发可以提高性能吗?

[英]Can concurrency improve performance?

我知道在运行YARV的Ruby中,线程意味着并发而不是并行。 我的问题是:只有并发才能提高性能的情况是什么? 例如,我可以想象并发性会在同时处理多个IO流时提高性能 - 如果一个任务很慢,这并不意味着堆栈中的所有下一个任务都必须等待该任务完成。 我对吗? 还有其他这样的情况吗? [hopes that YARV will ever remove the GIL]/[overhead of creating threads with the GIL]比率值得在目前开始使用Ruby中的线程吗?

在您有多个任务需要等待一些不经常发生的外部激励(例如,网络数据变得可用,磁盘读取完成等)的情况下,并发可能非常有用。如果您只是坐在循环中等待对于其中一项操作,您可以

  1. 等待很长时间才能完成某个单个事件,而其他事件已经完成并等待您查看它们,或者
  2. 浪费CPU功率循环数百个未触发的事件,寻找实际触发的事件。

并发性在设计本质上由事件驱动的程序时也很有用,例如等待发生不同的UI事件。 在这种情况下,您可以指定应响应不同UI事件而触发的任务,并且处理器可以只是处于休眠状态或处理其他任务而无需显式等待未触发的任务运行。 一旦发生事件,这些线程就会唤醒并共享CPU处理时间。

希望这可以帮助!

Ruby模型运行良好的一种情况是当您使用Ruby来驱动其他应用程序时。 例如,如果你产生了编译,那么你可以让一个Ruby线程处理一个外部进程。

另一个好处是它允许您将应用程序划分为逻辑部分,并让一个线程处理每个部分。 仅使用一个线程执行此操作可能需要您编写更复杂的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM