读书笔记:提高C++性能的编程技术   第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况下不会开启Trace功能.问题是:怎么设计Trace类,使得在不开启Trace功能时引入的开销最小. 1.2 使用状态变量开关功能 用宏来开关Trace功能很简单,在不开启时开销完全没有: #ifdef TRACE Trace trace("aaa"); #endif 缺点是每次开关都需要…
Efficient C++ Performance Programming Techniques 第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况下不会开启Trace功能.问题是:怎么设计Trace类,使得在不开启Trace功能时引入的开销最小. 1.2 使用状态变量开关功能 用宏来开关Trace功能很简单,在不开启时开销完全没有: #ifdef TRACE Trace trace("…
一个程序的执行效率是取决于改程序翻译成汇编语言之后的执行的机器指令的条数.而每一个机器指令的执行的周期是一定的.C语言和C++都是高于汇编语言的高级语言,其中,C语言源代码与其相应的机器指不是完全同一的,但是大致是线性的,但是C++语言的源代码与编译代码的开销变化很大的.一条C++指令可能对应于3条汇编指令,而另外的一条可能对应300条.正因为这样,很多时候我们写出来的代码本身就是低效的,这不能全然怪罪于C++语言本身,那么真正的软件的低效又体现在什么地方呢?这本书给了我们答案:软件的效率是由设…
需要时再创建对象,比如在类中用if new 而不是在构造函数里创建类的成员. 用char 指针而不是string可以节省构造和析构string的开销. 虚函数无法内联的性能损失.…
搜狐视频的屌丝男士第二季大结局了,惊现波多野老师,怀揣着无比鸡冻的心情啊,可惜随着剧情的推进发展,并没有出现期待中的屌丝奇遇,大鹏还是没敢冲破尺度的界线.想百度些种子吧,又不想让电脑留下污点证据,要知道大洋彼岸有个棱镜计划,只好作罢.不如看看书吧,书中自有颜如玉. 开始本次读书笔记前,先扯两个哲学观点,提高下境界.第一个就是<Data-Intensive Text Processing with mapReduce>读书笔记前言中谈到的,大数据产生了大价值,对应的思想很简单:量变导致了质变.第…
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的setDefaultUncaughtExceptionHandler方法!defaultUncaughtHandler是Thread类的静态成员变量,所以如果我们将自定义的UncaughtExceptionHandler设置给Thread的话,那么当前进程内的所有线程都能使用这个UncaughtExcep…
发现自己有很多读书笔记了,但是一直都是自己闷头背,没有输出,突然想起还有博客圆这么个好平台给我留着位置,可不能荒废了. 此文读的书是<Jvava并发编程的艺术>,方腾飞等著,非常经典的一本书,本笔记是一边复习笔记,一边对照书本上的勾画重点,互相补充得来. 一.并发编程的目的与挑战 并发编程的目的只有一个:更充分的利用好计算资源,让程序运行的更快更有效率 请把这个目的牢记在心,因为,并不是启动更多的线程就能让程序最大限度的并发执行的,因为配合,甚至管理更多的线程本身也是有开销的.所以至少来说,利…
http://note.youdao.com/noteshare?id=9ab0eda264c85b774021426867e18eae…
并发编程概述 前言 我们经常在耳边听说一些关于高性能.并发和并行等名词,并且很多人都对并发编程有一些误解. 误解 1:并发就是多线程? 答:多线程只不过是并发编程的其中一种形式而已.并发编程的种类很多:如异步.并行.TPL 数据流和响应式编程等. 误解 2:只有大型服务器程序才需要考虑高并发? 答:我们平时常用的桌面应用.手机移动端应用和 B/S 应用等都应该考虑使用并发编程,现代用户的生活质量普遍提高,带宽也越来越大,用户的要求也越来越苛刻.用户的请求必须得到及时快速的响应,无法满足这样需求的…
一.多线程语义 即使是单核处理器也支持多线程执行代码,CPU 通过给每个线程分配 CPU 时间片来执行任务,当前任务执行一个时间片后会切换到下一个任务,所以 CPU 通过不停的切换线程执行. 并发执行如果没有达到一定的数量级,速度反而会比串行执行要慢.这是因为线程有创建和上下文切换的开销. 如何减少线程创建和上下文切换的开销?("vmstat 1" 的 cs 参数,查看线程切换的次数) 无锁并发编程.多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,比…