为什么繁忙的循环经常使用100%的cpu时间,而实现复杂算法的循环使用的则少得多?
谢谢:)
答案 0 :(得分:3)
CPU架构中的JUMP指令效率低下,因为它们会导致管道刷新。繁忙的循环实际上是一系列无限的JUMP指令。
答案 1 :(得分:3)
复杂的算法当然可以使用100%的cpu。但是,许多实现复杂算法的循环要么定期明确地产生线程,要么/或者有一些代码在某个时刻调用OS,其中线程产生或者需要等待的东西(例如调用co-处理器)发生。
答案 2 :(得分:2)
首先,如果您的繁忙循环使用100%,那么您没有正确行事。睡了一会儿。
其次,复杂算法通常涉及存储值以存储值而不仅仅是循环。只要线程需要使用外部资源(如内存,磁盘等),CPU就必须等待一段时间。这就是为什么你会看到它使用不到100%。
答案 3 :(得分:1)
“忙循环”不必与内存通信,因此CPU基本上无需等待外部输入即可完成所有工作。
答案 4 :(得分:1)
取决于“复杂算法”正在做什么。它是否可以访问硬盘?网络请求?与任何其他硬件互动?当发生这种情况时,CPU将不得不等待完成这些事情,因此它在等待该信息返回时无所事事(或上下文切换到其他工作)。