`

58龙哥教你“如何做系统性能优化”(纯干货)

    博客分类:
  • java
 
阅读更多
如何做系统性能优化

性能优化的目标是什么?不外乎两个:
时间性能:减小系统执行的时间
空间性能:减小系统占用的空间

一、代码优化
做代码优化前,先了解下硬件Cache:
(1)Cache Level:通常来说L1、L2的Cache集成在CPU里,L3的Cache放在CPU外;
(2)Cache Size:它决定你能把多少东西放到Cache里,有Size就有竞争,就有替换,才有所谓优化的空间;
(3)Cache Type:I-Cache(指令),D-Cache(数据),TLB(MMU的Cache);

代码层次的优化主要从以下两个角度考虑问题:
(1)I-Cache优化:精简code path,简化调用关系,减少冗余代码等等;
(2)D-Cache优化:减少D-Cache的miss数量,增加有效数据访问。

以下是一些技巧,可供参考:
(1)Code adjacency(把相关代码放在一起)
这里有两层含义:一是相关源文件要放在一起;二是相关函数在object文件里面,也应该相邻。
这样,可执行文件被夹在到内存里时,函数位置也是相邻的,同事还符合模块化编程的要求:高内聚,低耦合。
(2)Cache line alignment(cache对齐)
对齐Cache以减少潜在的一次读写,但这可能意味着内存的浪费,需要从空间和时间两方面衡量。
(3)Branch prediction(分支预测)
如果能预测那段代码有更高的执行概率,就能减少跳转次数(调整if和else的顺序?)。
(4)Data prefetch(数据预取)
由CPU自动完成。
(5)Register parameters(寄存器参数)
(6)Lazy computation(延时计算)
最近不用的变量,不要急着去初始化(意味着可能执行复杂的构造),如果某个分支跳出了函数,这些动作就浪费了。
COW(copy-on-write)就是一种延时计算的技术。
(7)Early computation(提前计算)
有些变量,计算一次就够了,任何加减乘除都会消耗CPU指令,尽量使用常数,而不是24*60*60来表示一天的秒数。
(8)Inline(内联函数)
(9)Macro(宏定义)
(10)Allocation on stack(局部变量)
避免在栈上申请大数组,其初始化和销毁的代价很高。
(11)Per-cpu data structure(非共享数据结构)
避免共享量的锁,在thread local里,多核情况下使用局部变量会带来好处。
(12)Reduce call path or call trace(减少函数调用层次)
(13)Read&write split(读写分离)
(14)Recude duplicated code(减少冗余代码)

其中,(1)(6)(7)(8)(9)(10)(11)(12)(14)这些优化方式最为常见。

二、工具优化
“工欲善其事
分享到:
评论

相关推荐

    龙哥首写模块

    龙哥首写模块,第一次写的模块,还是很好用的

    跟“龙哥”学C语言编程.docx

    通过 C语言,程序员可以更直接地与计算机硬件进行交互,从而更好地优化程序性能。此外,C 语言还具有灵活性和可移植性,使得它成为很多开发任务的理想选择。 正因为 C 语言在计算机科学中的重要地位,很多计算机...

    龙哥库塔法实现短波射线追踪

    本文将介绍一种基于龙哥库塔法的短波射线追踪技术,以实现更精确的路径模拟和优化。 #### 短波射线追踪的重要性 射线追踪技术对于短波通信至关重要。它不仅有助于理解信号在电离层中的传播特性,还能帮助确定最佳...

    龙哥制作电脑病毒第三课教程

    电脑病毒,顾名思义,是人为编写的恶意软件,其目的是在未经用户许可的情况下感染计算机系统,复制自身,并可能破坏、窃取数据或者使系统运行异常。在本教程中,我们将深入探讨"龙哥制作电脑病毒第三课"所涵盖的关键...

    龙哥专用代理

    强大的ip代理软件 。无毒 无广告。

    RK-4.zip_四阶龙哥库塔_龙哥库塔_龙哥库塔matlab_龙哥库塔rk4_龙哥库塔法

    "龙哥库塔matlab"、"龙哥库塔rk4"、"龙哥库塔法"等标签都与四阶龙格-库塔方法在Matlab环境中的应用相关。这些标签强调了在编程实践中,如何利用Matlab的灵活性和强大功能来实现数值积分。 至于压缩包内的音频文件...

    SQL书写规范;书写优化性能建议;经验性规则

    二、书写优化性能建议 三、其他经验性规则 一、sql书写规范: 1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。 2、连接符or、in、and、以及=、、>=等前后加上一个空格。 3、对...

    zuoye.rar_龙哥库塔

    《龙哥库塔:深入解析数值分析中的欧拉方法》 在数值分析的广阔领域中,欧拉方法(Euler Method)占据着重要的地位,它是一种基础且实用的微分方程初值问题求解方法。这个名为"zuoye.rar_龙哥库塔"的压缩包文件,...

    用于FLUENT计算结构单自由度涡激振动,采用四阶龙哥库塔法,并设置了并行计算.zip

    本文将深入探讨如何使用四阶龙格-库塔法(Runge-Kutta 4th order method)来解决此类问题,并结合C#编程语言实现并行计算优化性能。 涡激振动是指流体与结构相互作用过程中,由于流体涡旋的生成和脱落,导致结构...

    龙哥库塔算法

    c++,matlab, 龙格库塔算法,数值分析,可移植性,工程数值

    icrosoftWord.rar_龙哥库塔

    标题中的“MicrosoftWord.rar_龙哥库塔”表明这是一个与Microsoft Word文档相关的压缩包,而“龙哥库塔”很可能是作者或者一个特定方法的别称,尤其在数学或科学计算领域,它通常指的是数值解法中的“龙格-库塔”...

    龙哥库塔C++数值解

    通过阅读和理解这个文件,你可以学习到如何将理论的龙格-库塔方法转化为实际的计算过程,这对于学习数值计算和C++编程都是很有价值的。 总的来说,龙格-库塔方法在C++中的实现是数值计算领域的一个重要实践,它能...

    解四阶龙哥库塔法.zip_解四阶龙格库塔法matlab程序_随机共振_随机共振基本原理_随机共振法_龙哥库塔

    在提供的压缩包“解四阶龙哥库塔法”中,很可能包含了一个MATLAB程序,该程序实现了四阶龙格-库塔法,用于求解随机共振相关的问题。用户可以通过运行这个程序,输入特定的参数,比如状态方程、初始条件、时间范围和...

    High_Laser_zhapshanghong_book.rar_high_laser_龙哥库塔_龙哥库塔法

    四阶龙哥库塔法解非线性方程组,绝对的好资料

    zishiydiedaixuexi_iterativefault_observerfault_观测器_fault_故障估计_

    在IT行业中,故障检测与估计是自动化控制领域中的重要研究方向,特别是在复杂系统如航空航天、电力系统、工业自动化等的应用中。本主题聚焦于“基于自适应迭代学习算法的一类非线性系统故障检测与估计”,它综合了...

    SRMatlab.rar_SRmatlab_随机共振matlab_随机共振程序_龙哥库塔_龙哥库塔 matlab

    随机共振的MATLAB源程序,运用龙哥库塔算法进行的仿真

    龙哥的Java基础笔记大全

    【小龙的基础笔记】是针对Java初学者的一份详尽教程,由知名导师“龙哥”精心编撰。这份笔记集合了Java编程语言的基础知识,旨在帮助读者从零开始掌握这门广泛使用的编程语言。以下是对笔记中涉及的主要知识点的详细...

    简单的图片上传--龙哥.zip

    "简单的图片上传--龙哥"这个项目可能是为了教学或演示如何实现一个基本的图片上传功能。下面将详细介绍这个过程涉及的关键知识点。 1. **前端上传界面设计**:首先,我们需要在用户界面上提供一个选择文件的按钮,...

    数值分析程序_c语言.rar_数值分析_数值分析程序_c语言_龙哥库塔法C

    1. **龙哥库塔法(Runge-Kutta方法)**:这是一种常微分方程(ODE)的数值解法,特别适合于非线性系统的模拟。Runge-Kutta方法通过多次近似求解,逐步逼近真实解,根据步长的不同,有四阶、五阶甚至更高阶的Runge-...

    (中文版)C语言编程:一本全面的C语言入门教程 (第3版)

    这可是清晰版啊!!!《C语言编程》张小潘译 原作者:Stephen G.Kochan(斯蒂芬....本书是一本完完整整介绍C语言基础的书籍。本书最大的特色在于举例精妙,讲解生动。通过一系列实际情形的需求,引入关于程序设计的基本...

Global site tag (gtag.js) - Google Analytics