码迷,mamicode.com
首页 > 编程语言 > 详细

《c++应用程序性能优化》读书笔记 part1

时间:2018-03-20 00:54:27      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:lang   种类型   析构函数   开发   内容   函数调用   了解   优化   blog   

我对C++有一定的了解,也写过一些C++的代码,所以我想看看这本书来加深我对C++的理解。打开书,它分为4篇,第一章介绍C++的程序优化基础,第二章介绍C++的内存使用优化,第三章介绍应用程序的启动性能优化,第四章介绍一些性能优化的工具。

因为时间原因,我本周看的是第一章。第一章上来先介绍了C++的程序占用内存区的方式。一般有5种:全局/静态数据、常量数据区、代码区、栈、堆。根据这五种类型,我们可以针对的设计优化的方法。一般来说,堆和栈的使用是必不可少的。例如:链表,当需要为链表新增节点时,就需要在堆上申请内存并创建节点。另外堆和栈还有如下的差别:1、大小。一般说来,一个程序使用的栈的大小是固定的,由编译器决定,一般是1M,可以通过编译选项调整栈的大小。而堆的大小一般只受限于系统有效的虚拟内存的大小。2、效率。栈上的内存是系统自动分配的,压栈和出栈都有相应的指令进行操作。因此效率较高,并且分配的内存空间是连续的,不会产生内存碎片;而堆上的内存是由开发人员来动态分配和回收的。当开发人员通过new或malloc申请堆上的内存时,系统需要按一定的算法在堆空间中寻找合适大小的空闲堆,并修改相应的维护堆空闲空间的链表,然后返回地址给程序。因此效率比栈要低,此外还容易产生内存碎片。看起来栈的使用相对要方便而且效率高,但是有的时候,堆可以解决一些栈不能解决的问题。比如:要存放一个未知大小的数组,使用栈来作为存储空间显然不合适,这时候就要用分配动态存储空间,这时候使用堆就要好一点了。但是也带来了一些问题,比如效率较低。这时候就要对内存的使用进行优化了。

第一部分的内容主要是对C++的简单介绍,因为我之前了解过,就没有细看了。第二部分说的内容大概就是优化性能的一些思路,这是我以前所不了解的。比如碰到了瓶颈,很多时候,一个程序的速度在框架设计完成时大致已经确定了,而并非是因为采用了C++语言才使其速度没有达到预期的目标。当遇到性能问题时,首先应该检查和反思程序的总体框架。然后用性能检测工具对其实际运行做准确地测量,再针对瓶颈进行分析和优化。常见的一些因素有,从堆中释放内存,构造函数和析构函数的调用,大量的函数调用。这些都非常耗时,我们应该多加注意,尽量减少动态存储空间的使用,临时对象的建立要多加考虑,函数里的代码量比较小的时候尽量采用内联函数等(我堆内联函数用的蛮少的orz)。

这些方法我觉得十分有用,因为我不知道我以前的一些坏习惯可能会导致程序的性能下降很多。而且我觉得不光是C++,对其他的一些语言也有借鉴的意义,在以后的编程中我会多加考虑这些问题。

《c++应用程序性能优化》读书笔记 part1

标签:lang   种类型   析构函数   开发   内容   函数调用   了解   优化   blog   

原文地址:https://www.cnblogs.com/JERRY7/p/8605811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!