《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记
造成开销的操作包含:
一、对性能的思考
1 性能与可伸缩性
2 评估各种性能权衡因素
二、并发三大定律
Gene Amdahl 发如今计算机体系架构设计过程中,某个部件的优化对整个架构的优化和改善是有上限的。这个发现后来成为知名的 Amdahl 定律。
(即使你有10个老婆,也不能一个月把孩子生下来。)
Gustafson 定律
Gustafson如果随着处理器个数的添加�,并行与串行的计算总量也是能够添加�的。Gustafson定律觉得加速系数差点儿跟处理器个数成正比,如果现实情况符合Gustafson定律的如果前提的话,那么软件的性能将能够随着处理个数的添加�而添加�。
(当你有10个老婆,就会要生很多其它的孩子。)
Sun-Ni 定律
充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。
(你要设法让每一个老婆都在干活,别让她们闲着。 )
2 Amdahl定律的应用
多线程中串行部分是性能提升的瓶颈,比如:
三、线程引入的开销
1 上下文切换
2 内存同步
3 堵塞
四、降低锁的竞争
有3中方式能够减少锁的竞争程度:
1. 降低锁的持有时间。
2. 减少锁的请求频率。
3. 使用带有协调机制的独占锁,这些机制同意更高的并发性。
1 缩小锁的范围(“快进快出”)
2 减小锁的粒度(锁分解)
3 锁分段
4 避免热点域
5 一些替代独占锁的方法
6 监測CPU的利用率
. 负载不充足
. I/O密集
. 外部限制
. 锁竞争
7 向对象池说“不”
对象分配操作的开销比同步的开销更低。
五、演示样例:比較Map的性能
六、降低上下文切换的开销
參考资料:
《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记的更多相关文章
- Java并发编程实战 第11章 性能与可伸缩性
关于性能 性能的衡量标准有很多,如: 服务时间,等待时间用来衡量程序的"运行速度""多快". 吞吐量,生产量用于衡量程序的"处理能力",能够 ...
- 《Java并发编程实战》第十章 避免活跃性危急 读书笔记
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/love_world_/article/details/27635333 一.死锁 所谓死锁: 是指两 ...
- 《Java并发编程实战》第八章 线程池的使用 读书笔记
一.在任务与运行策略之间的隐性解耦 有些类型的任务须要明白地指定运行策略,包含: . 依赖性任务.依赖关系对运行策略造成约束.须要注意活跃性问题. 要求线程池足够大,确保任务都能放入. . 使用线程封 ...
- Java并发编程实战---第六章:任务执行
废话开篇 今天开始学习Java并发编程实战,很多大牛都推荐,所以为了能在并发编程的道路上留下点书本上的知识,所以也就有了这篇博文.今天主要学习的是任务执行章节,主要讲了任务执行定义.Executor. ...
- Java并发编程实战 第16章 Java内存模型
什么是内存模型 JMM(Java内存模型)规定了JVM必须遵循一组最小保证,这组保证规定了对变量的写入操作在何时将对其他线程可见. JMM为程序中所有的操作定义了一个偏序关系,称为Happens-Be ...
- 【java并发编程实战】第一章笔记
1.线程安全的定义 当多个线程访问某个类时,不管允许环境采用何种调度方式或者这些线程如何交替执行,这个类都能表现出正确的行为 如果一个类既不包含任何域,也不包含任何对其他类中域的引用.则它一定是无状态 ...
- Java并发编程实战 第8章 线程池的使用
合理的控制线程池的大小: 下面内容来自网络.不过跟作者说的一致.不想自己敲了.留个记录. 要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务.IO ...
- java并发编程实战:第二章----线程安全性
一个对象是否需要是线程安全的取决于它是否被多个线程访问. 当多个线程访问同一个可变状态量时如果没有使用正确的同步规则,就有可能出错.解决办法: 不在线程之间共享该变量 将状态变量修改为不可变的 在访问 ...
- Java并发编程实战 第15章 原子变量和非阻塞同步机制
非阻塞的同步机制 简单的说,那就是又要实现同步,又不使用锁. 与基于锁的方案相比,非阻塞算法的实现要麻烦的多,但是它的可伸缩性和活跃性上拥有巨大的优势. 实现非阻塞算法的常见方法就是使用volatil ...
随机推荐
- 关于SqlParameter中IN子句查询的问题
今天调试到方法中代码: String hotelCodes =”’’,’’,’’”; string sqltext ="select * from HotelMedalInfo where ...
- WinCE发展史
Windows CE概述 WindowsCE是微软公司嵌入式.移动计算平台的基础,它是一个开放的.可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,W ...
- ↗☻【编写可维护的JavaScript #BOOK#】第4章 变量、函数和运算符
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- (转载)static全局变量与普通的全局变量有什么区别?
(转载)http://www.cnblogs.com/StudyRush/archive/2010/09/25/1834922.html 全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...
- Webdriver API (二)
(转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...
- Jmeter性能测试之如何写Java请求测试用例类
一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...
- Base-Android快速开发框架(一)--概述
首先简单介绍一下Base.Base是本人长期以来经过10来款APP总结出来的一个Android快速开发框架.包含数据缓存模块.工具包.第三方组件包.网络模块.数据解析.常用主界面布局等.可以快速的开发 ...
- Tomcat问题笔记
1. Tomcat服务器只能同步WebContent目录到webapps下面,如果WebContent里面的.html文件引用了与WebContent文件夹同级目录下的一个.js文件,Tomcat服务 ...
- ubuntu 中文界面下中文文件夹改英文
首先,打开终端,切换成英文环境, export LANG=en_US 接着,目录转换 xdg-user-dirs-gtk-update 最后,切换回中文环境 export LANG=zh_CN ...
- setBackgroundMusicLoop for cocos2dx
给cocos2dx的SimpleAudioEngine加上设置背景音乐循环的方法,详见gist.