系统健康与分析 2018 程序啪啪啪
系统健康与分析
内存
- 明确目标
- 用对比参照物(同类产品)
- 量化目标(要优化多少)
- 经验(可能存在的问题)
- 获取数据
- 从整体到部分
- 系统级别total
- 应用级别PSS,USS
- 应用内级别smaps
- Java-Heap
- Native-Heap
- Other-Modules
- Tools
- SystemAPI
- proc
- smaps
- Jhat
- MAT
- SystemAPI
- 从整体到部分
- 定位问题
- DS-5
- DependOn Data
- 给出方法
- PageShared
- DirtyPage
- 精简结构
性能
- AIM
- Compare
- The feature
- Data
- Profile
- SolveLevel
- Strategy
- Algorithm
- DataStructure
- Language
- LanguageFeature
- Hotpoint
- Hardware
- RAM
- Cached
- loop
- ROM
- RAM
- Strategy
- Solve
思想
- 具体问题具体分析
- 明确目标
- 数据说话
- 前人经验
- Thought
- 究竟要优化什么?在一开始,你就应该清楚地了解你要达到的效果,以及其他优化相关的各种问题。
- 选择一个正确的优化指标: 将最多的努力投入到运行消耗时间最多的那部分代码中. 需要注意的是,如果你轻易选择了一个很容易达到的指标,这作用不大,因为没有真正解决问题。你有必要选择一个更复杂的、更接近你的目标的指标。
- 优化在刀刃上: 找到项目中与你的目标(性能、资源或其他)相背的地方,并将你的努力和时间用在那里。 不要分心于容易实现的问题
- 优化层次越高越好: 根据这个标准,最好的优化是找到一个更有效的算法。
- 不要过早优化: 你应该将项目开发和优化当作两个独立的步骤来做
- 依赖性能分析,而不是直觉: 性能分析数据应该是第一位的,最后才是直觉。
- 优化不是万金油: 你无法优化一切,甚至无法同时优化两个问题
tags: SystemOptimize
具体方法
- 展开循环
- 消除数据相关性
- 数据并行处理
- 优化引用数据结构
- 减小数据结构的尺寸
- DRAM板块上的数据分布策略
- 规划数据流
- 按字节、双字与四字进行内存处理
- 数据对齐
- 内存访问与计算的组合
- 读写操作的组合
- 只在必要时才访问内存
- 内置C内存处理函数的优化
- 内存处理函数的优化质量
- C字符串库函数的优化
- 字符串处理函数的质量优化
- 块处理算法的优化
- 大型数组排序的优化
创建@
2012-12-09
最后修改@
2014-01-03