关于程序性能优化基础的一些个人总结

性能点:

I/O,系统调用,并发/锁,内存分配,内存拷贝,函数调用消耗,编译优化,算法

I/O性能优化:

I/O性能主要耗费点:系统调用,磁盘读写,网络通讯等

优化点:减少系统调用次数,减少磁盘读写次数,减少阻塞等待

优化手段:

a. 使用非阻塞模式

b. 使用带缓存的I/O,减少磁盘读写次数

c. I/O多路复用,select/poll/epoll

d. 异步I/O

系统调用:

耗费点:用户态和系统态切换时耗

优化点:减少不必要的系统调用

优化手段:

a. I/O操作,根据具体情况,使用stdio库代替read/write

b. 缩减不必要的系统调用,

并发/锁:

并发处理(多线程、多进程)在一定条件下可提升性能,

但如果存在共享资源,则需要有互斥锁的开销。

锁的优化:

a. 线程本地变量,避免存在共享资源

b. 减少锁的粒度

c. 无锁算法,如使用atomic实现的无所队列

d. 算法上减少对共享资源的访问, 如多版本算法

内存分配:

涉及系统调用和系统内存分配的锁操作。

优化点:减少内存分配/释放的次数和频繁度

优化手段:

a. 一次分配多次使用,如内存池

b. 系统内存分配替代库,如tcmalloc提高多线程环境内存分配

c. 提升对象重用程度,避免重复构造和析构

内存拷贝:

优化点:减少内存的拷贝操作

优化手段:

a. 利用指针、引用代替数值拷贝

b. 写时复制技术,两个对象同时引用一份数据,只有当其中一个对象需要改写数据时,才拷贝出一个数据副本。

(std::string采用写时复制, 因此一般情况下函数按值传递和返回std::string,不存在字符串复制操作)

函数调用消耗:

函数调用时存在栈分配初始化以及后续的栈回收操作。

优化手段:

a. 简单的函数,使用宏或内联方式

编译优化:

使用编译器的优化选项,带来额外的性能提升

算法:

针对特定的需求提升算法优化程度,如减少循环处理次数,使用高性能排序和搜索算法等。

关于程序性能优化基础的一些个人总结,布布扣,bubuko.com

时间: 2024-11-04 21:03:46

关于程序性能优化基础的一些个人总结的相关文章

Java程序性能优化——性能调优层次

为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化.除了最常见的代码优化外,在软件架构上.JVM虚拟机层.数据库以及操作系统层都可以通过各种手段进行调优,从而在整体上提升系统的性能. 设计调优 设计调优处于所有调优手段的上层,它往往需要在软件开发之前进行.在软件开发之初,软件架构师就应该评估系统可能存在的各种潜在的问题,并给出合理的设计方案.由于软件设计和架构对软件整体有决定性的影响,所以,设计调优对系统性能的影响也是最大的.如果说,代码优化.JVM优化都是对系统微观层面上"量&

Java程序性能优化——设计优化

原文出自:http://blog.csdn.net/anxpp/article/details/51914119,转载请注明出处,谢谢! 1.前言 OK,之前写了一篇文章:"23种设计模式介绍以及在Java中的应用"详细介绍了如何将设计模式应用到Java编程中,而本文旨在介绍如何利用他们优化我们的程序,使其性能更佳. 设计模式的详细介绍请参照上面链接中的文章,不是本文的重点. 而Java程序的性能优化,不一定就仅仅是以提高系统性能为目的的,还可能是以用户体验.系统可维护性等为目的. 2

C++ 应用程序性能优化

C++ 应用程序性能优化 C++ 应用程序性能优化 [email protected] 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方程,以及非线性优化的一些算法,如BFGS,FRPR,PSO等等用于多元函数的极值求解,所以这些数值算法的性能直接影响系统的性能.软件的性能优化是计算机软件开发过程中需要一直关注的重要因素,因此有必要学习下C++应用程序性能优化的方法. 在网上寻找相关资料时,发现这方

《Java程序性能优化》学习笔记 Ⅳ JVM调优

第五章 JVM调优5.1 Java虚拟机内存模型1.JVM虚拟机将其内存数据分为程序计数器.虚拟机栈,本地方法栈,Java堆,和方法去等部分.5.2 JVM内存分配参数5.3 垃圾收集基础5.4 常用调优案例和方法5.5 使用JVM参数5.6 实战JVM调优 <Java程序性能优化>学习笔记 Ⅳ JVM调优

C++应用程序性能优化(一)——应用程序性能优化简介

C++应用程序性能优化(一)--应用程序性能优化简介 一.程序性能优化简介 1.程序性能优化简介 在计算机发展的早期阶段,硬件资源相对而言是非常昂贵的,CPU运行时间与内存容量给程序开发人员设置了极大限制.因此,早期的程序对运行性能和内存空间占用的要求是非常严格的,很多开发人员为了减少1%的CPU运行时间,为减少几十个甚至几个字节而不懈努力.随着计算机技术的快速发展,硬件资源变得相对便宜.但如果认为软件开发时,程序的性能优化不再重要,硬件将解决性能问题也是片面的.计算机硬件的发展解决了部分软件的

C++应用程序性能优化(二)——C++对象模型

C++应用程序性能优化(二)--C++对象模型 一.C++对象模型与性能优化 对象模型是面向对象程序设计语言的重要方面,会直接影响面向对象语言编写程序的运行机制以及对内存的使用机制,因此了解对象模型是进行程序性能优化的基础.只有深入理解C++对象模型,才能避免程序开发过程中一些不易发现的内存错误,从而改善程序性能,提高程序质量. 二.C++程序的内存分布 1.程序内存分布简介 通常,计算机程序由代码和数据组成,因此代码和数据也是影响程序所需内存的主要因素.代码是程序运行的指令,比如数学运算.比较

C++应用程序性能优化(三)——C++语言特性性能分析

C++应用程序性能优化(三)--C++语言特性性能分析 一.C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高但性能要求并不是很高的程序.因为大多数开发人员认为,C++语言设计时因为考虑到支持多种编程模式(如面向对象编程和范型编程)以及异常处理等,从而引入了太多新的语言特性.新的语言特性往往使得C++编译器在编译程序时插入了很多额外的代码,会导致最终生成的二进制代码体积膨胀,而且执行速度下降.但事实并非如此

程序性能优化之SQL篇

如果说功能是程序的躯体,那么性能就是程序的灵魂.完整的功能可以保证程序的躯体是健全的,而良好的性能才是程序灵魂的象征,本文就程序的性能优化做简单的介绍. 最近对程序的性能的体会尤为深刻.最近做了一个数据查询和显示的功能,从7张表大概1500条数据中查询25条数据并且显示出来,时间消耗1秒钟.我的计算机参数为:CPU:i5处理器,4G内存.这个执行速度相当的慢,好在我查询的数据量比较小,等待时间不是很多,但是程序性能优化确实刻不容缓. 仔细分析了程序,发现有很多地方都是需要修改的,我们先从数据库开

Java程序性能优化技巧

多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for循环Vector vect = new Vector(1000);for( inti=0; i<vect.size(); i++){ ...}for循环部分改写成:int size = vect.size();for( int i=0; i>size; i++){ ...} 如果size=1000,就可以减少1000次si