- 浏览: 124126 次
- 性别:
- 来自: 北京
博客专栏
-
httclient实践与源...
浏览量:0
文章分类
- 全部博客 (141)
- java设计模式 (6)
- oracle (2)
- spring (0)
- java多线程 (12)
- Effective Java 读书笔记 (5)
- mysql (11)
- 书签 (2)
- Web前端 (2)
- python (6)
- 技术博客 (6)
- 搬家 (2)
- android (1)
- java (18)
- 架构 (6)
- linux (14)
- memcached (3)
- 测试 (1)
- 网络 (1)
- 高性能WEB (2)
- http (1)
- java io (2)
- jdbc (1)
- php (5)
- css (2)
- jenkins (1)
- jfinal (1)
- maven (3)
- 算法 (3)
- 代码规范 (1)
- shell (3)
- 安全 (1)
- fastJson源码剖析 (0)
- jdk源码分析 (0)
- git (1)
- 分布式知识点 (0)
- 分布式 (1)
- tcp (1)
- cpu (2)
- 软技能 (1)
- 编译原理 (1)
- 操作系统 (1)
- java虚拟机 (1)
- 处理器 (1)
- tbschedule (1)
- 需要看的源码 (1)
- idea (1)
- zookeeper (1)
- httpclient (1)
最新评论
-
lliiqiang:
功能是关键,但是因为人的性能有限,所以性能也有可能是功能,
关于有效的性能调优的一些建议 -
huangyunbin:
呵呵,感觉和缓存很相似,已经存在的直接缓存里取,缓存没有的话加 ...
享元模式
如何做系统性能优化
性能优化的目标是什么?不外乎两个:
时间性能:减小系统执行的时间
空间性能:减小系统占用的空间
一、代码优化
做代码优化前,先了解下硬件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)这些优化方式最为常见。
二、工具优化
“工欲善其事
性能优化的目标是什么?不外乎两个:
时间性能:减小系统执行的时间
空间性能:减小系统占用的空间
一、代码优化
做代码优化前,先了解下硬件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)这些优化方式最为常见。
二、工具优化
“工欲善其事
发表评论
-
java Unsafe类
2018-03-20 20:55 457http://ifeve.com/sun-misc-unsaf ... -
java 之DelayQueue实际运用示例
2016-06-15 17:09 542http://www.cnblogs.com/sunzhenc ... -
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
2015-07-03 19:11 708window下在同一台机器上安装多个版本jdk,修改环境变量不 ... -
java实现base64
2015-04-29 15:30 545BASE64和其他相似的编码算法通常用于转换二进制数据为文本数 ... -
最全的静态网站生成器(开源项目)
2015-04-26 00:53 539最全的静态网站生成器(开源项目) http://www.ite ... -
关于有效的性能调优的一些建议
2015-04-19 12:09 776关于有效的性能调优的 ... -
java 代码时间和内存测试
2015-04-18 22:26 646// 测试用了多少内存 import java.util ... -
系统打印日志的10条建议(翻译)
2015-04-14 14:33 509http://uptoknow.iteye.com/blog/ ... -
Java编程最差实践
2015-04-14 14:32 415http://macrochen.iteye.com/blog ... -
几行代码写RPC
2015-04-13 22:55 476转自梁飞博客 package com.alibaba.stud ... -
java 关于for和foreach,兼顾效率与安全
2014-12-05 14:46 17478关于for和foreach,兼顾效率与安全 对于数组的访问,是 ... -
java 关于for循环
2014-12-05 14:41 582关于使用for循环 有人喜欢使用for作类似while的循环: ... -
会话COOKIE? 持久COOKIE?
2014-11-07 00:15 583关于COOKIE和SESSION的关系,一直没搞清楚。网上一搜 ... -
内存cookie与持久cookie
2014-11-05 22:27 591cookie分两种 :会话cookie(session coo ... -
Java字符串底层理解
2014-09-11 15:11 7721. 栈(stack)与堆(heap)都是 ... -
java 字符串相加
2014-09-10 14:01 1541字符串相加。string + (原作者: 火龙果) 为了加 ... -
java虚拟机垃圾回收深入理解
2013-03-18 17:52 926JAVA学习之4 引用与JVM 1.java内存管理分为内存分 ...
相关推荐
龙哥首写模块,第一次写的模块,还是很好用的
通过 C语言,程序员可以更直接地与计算机硬件进行交互,从而更好地优化程序性能。此外,C 语言还具有灵活性和可移植性,使得它成为很多开发任务的理想选择。 正因为 C 语言在计算机科学中的重要地位,很多计算机...
本文将介绍一种基于龙哥库塔法的短波射线追踪技术,以实现更精确的路径模拟和优化。 #### 短波射线追踪的重要性 射线追踪技术对于短波通信至关重要。它不仅有助于理解信号在电离层中的传播特性,还能帮助确定最佳...
电脑病毒,顾名思义,是人为编写的恶意软件,其目的是在未经用户许可的情况下感染计算机系统,复制自身,并可能破坏、窃取数据或者使系统运行异常。在本教程中,我们将深入探讨"龙哥制作电脑病毒第三课"所涵盖的关键...
强大的ip代理软件 。无毒 无广告。
"龙哥库塔matlab"、"龙哥库塔rk4"、"龙哥库塔法"等标签都与四阶龙格-库塔方法在Matlab环境中的应用相关。这些标签强调了在编程实践中,如何利用Matlab的灵活性和强大功能来实现数值积分。 至于压缩包内的音频文件...
二、书写优化性能建议 三、其他经验性规则 一、sql书写规范: 1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。 2、连接符or、in、and、以及=、、>=等前后加上一个空格。 3、对...
《龙哥库塔:深入解析数值分析中的欧拉方法》 在数值分析的广阔领域中,欧拉方法(Euler Method)占据着重要的地位,它是一种基础且实用的微分方程初值问题求解方法。这个名为"zuoye.rar_龙哥库塔"的压缩包文件,...
本文将深入探讨如何使用四阶龙格-库塔法(Runge-Kutta 4th order method)来解决此类问题,并结合C#编程语言实现并行计算优化性能。 涡激振动是指流体与结构相互作用过程中,由于流体涡旋的生成和脱落,导致结构...
c++,matlab, 龙格库塔算法,数值分析,可移植性,工程数值
标题中的“MicrosoftWord.rar_龙哥库塔”表明这是一个与Microsoft Word文档相关的压缩包,而“龙哥库塔”很可能是作者或者一个特定方法的别称,尤其在数学或科学计算领域,它通常指的是数值解法中的“龙格-库塔”...
通过阅读和理解这个文件,你可以学习到如何将理论的龙格-库塔方法转化为实际的计算过程,这对于学习数值计算和C++编程都是很有价值的。 总的来说,龙格-库塔方法在C++中的实现是数值计算领域的一个重要实践,它能...
在提供的压缩包“解四阶龙哥库塔法”中,很可能包含了一个MATLAB程序,该程序实现了四阶龙格-库塔法,用于求解随机共振相关的问题。用户可以通过运行这个程序,输入特定的参数,比如状态方程、初始条件、时间范围和...
四阶龙哥库塔法解非线性方程组,绝对的好资料
在IT行业中,故障检测与估计是自动化控制领域中的重要研究方向,特别是在复杂系统如航空航天、电力系统、工业自动化等的应用中。本主题聚焦于“基于自适应迭代学习算法的一类非线性系统故障检测与估计”,它综合了...
随机共振的MATLAB源程序,运用龙哥库塔算法进行的仿真
【小龙的基础笔记】是针对Java初学者的一份详尽教程,由知名导师“龙哥”精心编撰。这份笔记集合了Java编程语言的基础知识,旨在帮助读者从零开始掌握这门广泛使用的编程语言。以下是对笔记中涉及的主要知识点的详细...
"简单的图片上传--龙哥"这个项目可能是为了教学或演示如何实现一个基本的图片上传功能。下面将详细介绍这个过程涉及的关键知识点。 1. **前端上传界面设计**:首先,我们需要在用户界面上提供一个选择文件的按钮,...
1. **龙哥库塔法(Runge-Kutta方法)**:这是一种常微分方程(ODE)的数值解法,特别适合于非线性系统的模拟。Runge-Kutta方法通过多次近似求解,逐步逼近真实解,根据步长的不同,有四阶、五阶甚至更高阶的Runge-...
这可是清晰版啊!!!《C语言编程》张小潘译 原作者:Stephen G.Kochan(斯蒂芬....本书是一本完完整整介绍C语言基础的书籍。本书最大的特色在于举例精妙,讲解生动。通过一系列实际情形的需求,引入关于程序设计的基本...