如果我用双核处理器替换单核处理器,吞吐量是否会增加两倍?如果没有,为什么吞吐量没有翻倍?
答案1
它肯定不会增加两倍;这将是吞吐量的完美有效增加。这是不可能的,因为总会有一些开销。您获得多少好处将取决于以下几个因素:
如果您所运行的操作系统或程序没有能力在不同核心上调度进程,那么它可能根本不会增加。
如果您正在执行的任务不是非常可并行的(例如,它们严重依赖于 I/O 或其他缓慢的非 CPU 操作),它可能只会增加一点点。
如果任务是“高度并行”的,例如长时间运行相同的浮点计算或素数分解,那么它可能会增加很多。
这可能会让事情更差如果由于进程之间的依赖关系而导致上下文切换过多,或者您需要在进程之间同步内容。
答案2
看http://en.wikipedia.org/wiki/Amdahl%27s_law很好地描述了为什么它不会使你的吞吐量翻倍,以及如何分析实际上的改进是什么。
答案3
如果您编写的代码充分利用了两个处理器,您的吞吐量只会更好。通常,您需要确保您的代码使用 2 个或更多执行线程来执行作业。
只有在某些情况下,您才会看到性能实际上翻倍,因为需要进行一些记录才能运行多个线程。
答案4
这取决于你运行的代码类型。如果你受计算限制,并且你的代码使用线程,那么你可能会看到 2 倍的吞吐量改进(在相同的时钟速度下)。如果你受内存 I/O 限制或单线程,那么你可能看不到任何改进(甚至性能下降)。