通过并行压榨性能
2009 November 3
original article: http://highscalability.com/blog/2009/11/1/squeeze-more-performance-from-parallelism.htm
在过去我发布的很多文章中(例如The Future of the Parallelism and its Challenges),我曾经提到过同步访问共享资源是编写并行代码遇到的最主要的挑战。
同步和协调在整个执行过程中花费了很多的时间,使得并行的效率变低;与此同时,他们还降低了可扩展性。
现如今有许多种同步和协调的方式:
- 例如在Microsoft TPL,Intel TDD和Parallel Runtime Library等框架中创建任务对象,创建任务对象并把它们放到队列里面需要同步,而且如果我们把这些任务对象放到一些递归的工作中(例如QuickSort),那么将会花费更长的时间。
- 同步访问共享数据
当然,现有已经有了一些技术来避免上面提到的问题,例如Shared-Nothing, Actor Model和Hyper Object(A.K.A.Combinable Object)。如果我们简单的通过在重构我们的代码的过程中减少共享数据的使用的话,我们也能够获得很大的性能提高和很好的可扩展性。
No comments yet