赞
踩
1.在程序开始的时候就约定好线程数量,不要动态创建线程
2.使用火焰图分析工具,找出性能黑洞,进行单独优化
3.使用协程代替线程,减少线程的切换,在多任务的情况下效果明显。
4.线程数量与CPU的核数量保持一致,充分利用多核。
5.使用mmap+write替换read+write中的read操作,减少CPU拷贝,节省内存
6. 使用sendfile代替read+write,减少了CPU拷贝,减少上下文切换
7.使用epll代替poll和select
8.减少频繁的进行创建进程等操作,增加内核压力,列如频繁执行system()命令
9.通过异构计算进行计算加速,用gpu、dsp进行高并发计算。
10.利用时间空间进行置换,根据系统资源进行配置。
1.debug->release
2.-O1 -O2 -O3
3.使用静态库性能大于动态库。动态库第一次访问的时候会GOT造成耗时.运行时性能损失5%
4. 使用-lmopt或者-xlibmopt提升使用数学函数的时候的性能。
5.使用-xlic_lib=sunperf来链接经过优化的高速数学例行程序sun性能库提高数学密集型问题的性能
1.map-->hashmap
2.根据不同的使用场景使用不同的stl 插入 删除 查找 排序
3.使用效率更高的算法
4.使用空间换时间-放到队列中立刻返回
1.增加cache命中率
2.循环中增加if else命中,将大概率的放到优先命中。
3.高频短小函数使用内联函数
4.函数参数<3个 使用寄存器而不是内存
5.提前计算--多次使用的变量 提前计算好
6.延迟计算--用不到的变量用到的时候再去初始化
7.用宏 可以在编译时进行优化
8.局部变量初始化成本过高 尽量少用
9.避线程间的锁
10.内存对齐,减少总线读取数据的周期
11.多通道编程 数据独立按照通道构造数据
12.按照cacheline定义数据结构 内存虽然有浪费 但速度快
13.使用全局变量 利用cpu缓存的局部性原则增加数据缓存的几率
14.遍历二维数组的时候先遍历二位下标(连续内存)
15.提前new好内存 减少系统调用malloc/free的耗时
16.减少乘法、除法 多用位移运算
17.少用float结构
18.减少频繁内存分配 会因为内存碎片导致性能下降
19.使用引用和指针 减少值传递
20.利用多核特性 线程间顺序做业务
21.线程间ringbuffer无锁队列
22.多分支的情况下使用switch
23.使用自旋锁的时候需要注意使用场景避免忙占用
24.传递参数使用指针或引用,不要使用对象拷贝造成大量资源浪费
25.大量日志打印的时候减少printf,printf在没有重定向到/dev/null之前是需要输出到屏幕的,这个很耗资源
26.多线程少用不可重入函数
27.避免递归调用
1.使用oprofile对整个系统的性能进行分析,采用的是硬件计数器,效率高,负载低,且结果准确。
2.使用perf测试cpu命中率
3.使用iostat查看 io占用率
4.使用ptrace、strace查看系统调用
5.使用tcpdump抓包看数据
6.使用cat /pro/meminfo查看vss内存
7.使用top查看排行榜
8.使用free查看资源剩余
9.使用cat /proc/进程id/status 查看进程的状态vss、优先级、线程等
10.使用blktrace分析磁盘等io的性能
11.使用iotop分析磁盘占用率
12.利用dtrace编写d脚本来分析系统的瓶颈。
13.使用sysstat监控和分析系统性能
14.使用watch –d uptime来观察负载的变化情况
15.使用vmstat来分析系统的内存使用情况。
16.使用 hping3构造 TCP/IP 协议数据包,对系统进行安全审计、防火墙 测试
17.使用 execsnoop排查因为不断崩溃、重启等造成的偶尔会遇到系统的CPU使用率和系统平均负载很高,但却找不到哪个程序CPU高的问题。
18.使用pstack跟踪进程栈,找到进程常驻的函数。
19.使用ipc查看消息队列、共享内存和信号量等信息
20.使用cachestat查看cache命中率
21.使用memleak分析内存泄露
22.使用lsof -p 进程id 查看进程打开的文件列表
23.使用filetop跟踪内核中文件的读写情况
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。