作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它很容易找到和理解阿玛达尔定律的函数定义,但是我能够找到的所有工作示例对于我的小豌 bean 脑来说太模糊或太学术/大脑。
阿玛达尔定律采用以下参数:F
(无法通过多线程改进的任务百分比)和N
(要使用的线程数)。
如何精确计算F
?
您如何看待一段代码,并确定是否可以通过多线程进行改进?
最佳答案
相对容易地说出代码的哪些部分肯定不会从多线程中受益:顺序部分。如果必须按顺序执行一系列小步骤,则多线程不会有帮助,因为您始终需要等待一个步骤完成才能开始下一个步骤。从这个意义上说,许多常见任务不是(有必要)按顺序进行的:例如,在列表中搜索许多项目。如果要从列表中提取每个红色项,则可以在多个线程中共享列表的一部分,并将每个部分中的所有红色项收集到最终结果列表中。并发编程的困难在于找到解决实际问题的有效方法。
在较低的层次上,您可以讨论数据依赖性:如果某个指令或块本身使用该块的计算结果,则该指令或块取决于前一个块。因此(伪代码):
Block one:
load r1 into r2
add r1 to r3 into r4
Block two:
load r4 into r1
add 3 to r4 into r4
Block one:
load r1 into r2
add r1 to r3 into r4
Block two:
load r1 into r3
add 3 to r1 into r1
关于multithreading - 如何计算阿姆达尔定律的线程有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182559/
我是一名优秀的程序员,十分优秀!