——文章The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software By Herb Sutter的读书笔记
免费午餐的结束
近年来,摩尔定律失效、主频提速放缓,下一代CPU设计提高性能的方法:超线程(Hyperthreading)、多线程、缓存。
从1990年代至今,面向对象编程成为主流的原因,是其优势明显——能解决更大型的问题、更好的依赖解决;而其劣势——性能代价大,由摩尔定律——不断提速的CPU性能,所补偿,作者成为『免费的午餐』:人们使用面向对象方法写出性能低下的软件,等到交付后不久,硬件水平很快跟上。
但是到了现在,摩尔定律失效,作者认为软件开发将迎来下场革命:并发化。
并发化的代价和好处
目前并发化,多线程在主流开发广泛应用的原因:
- 自然地分离逻辑上独立的控制流
- 为了效率
并发化的代价:
- 需要人工规划没有瑕疵的并发模型 -> 漏洞产生竞争 -> 难以全面测试,debug耗时
- 并非所有应用适合并发
- 当设计不善时,获取锁的代价昂贵
对我们意味着什么
- 如果要使应用性能提升,压榨CPU吞吐性能,必须并发化。这是未来的『免费午餐』,如果未来Intel推出100核的CPU。但并非所以应用适合并发。
- CPU将越来越可能地,成为部分应用的下一个瓶颈,随I/O、网络、数据库瓶颈之后。
- 对于编程语言,效率性能优化将越来越重要。因为CPU主频的免费午餐(摩尔定律)趋于消失。
- 编程语言和系统,将越来越多地被迫支持、优化并发。更少的并行化标准(如pthread和OpenMP),更多的语言层面的支持(如Erlang Scala)。主流的lock-based编程是危险的,我们急切希望新的更高级的语言提供并发编程模型。
结论
- 打开你的项目看看有什么CPU密集的部分,可以从并发化获得好处。
- 花时间去学习并发编程,如这本书《七周七并发模型》by Paul Butcher