品味性能之道<三>:方法论】的更多相关文章

自顶向下的性能优化方法论 系统优化是包括系统设计.开发.产品上线.平台优化的全过程,不同阶段的优化工作对全系统所带来的效益是不同的.理想的性能优化论应该采用自顶向下的优化方法,即在项目设计.开发和上线等各项目阶段,均全面贯彻性能优化思想.特别是从头就开始不仅考虑业务功能的实现,而且同时考虑性能和代价. 下图是Oracle公司总结的在不同阶段进行优化工作所带来的效益和代价变化图.   设计阶段囊括的优化相关工作包括: 业务规则的优化设计: 数据库体系结构的优化设计: 数据库逻辑结构设计: 数据库物…
        一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述         socket是操作系统中I/O系统的网络延伸部分,它扩展了操作系统的基本I/O到网络通信,使进程和机器之间的通信成为可能.如果想完全地理解socket在Loadrunner中如何工作的,熟悉一些关于它的历史会很有帮助.           当前常用的socket,最早起源于BSD UNIX…
通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对比条件数目越多时switch的优势越为明显. 一.测试目的 最近与开发同学对于前面提到的性能问题,有着各自不同的见解,为证明我的观点,现设计如下测试场景验证 PS:一个方法里多达65个if else   二.测试策略 利用Junit4执行本次测试,分别设计50个.70个.100个条件式测试,每轮测试…
Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 .在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,只有知道表中数据的实际情况…
一.概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了.当然在关联之后我们还需要一些简单的字符处理,用以生成我们所需要的切糕.煎饼果子等.        ps:在此我只会分享手动关联技巧.   二.为什么要关联        通常而言我们的网络应用软件都需要输入账户密码登陆,在用户验证通过登陆以后,服务器如何确认谁是谁呢?        此时一般而言就是SESSIONID了,如下图所示:        …
一.索引概述      索引(index),它是数据库必不可少的一部分.它其实很简单呐!很好理解.      索引好比如一本书的目录,一张地图,一个写字楼里挂在大堂墙上的公司名录,一个地铁站的出口指示牌.      关系型数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理.合理的索引策略将保证各种操作的高效和快捷,没有合理的索引,将不得不按表进行全部遍历,这意味着退回到文件系统的处理方式,更意味着资源.时间的大量消耗.     二.…
     在上一章里,重点分享了命令行SQL分析工具的使用方法.在本章将重点分享PL/SQL的SQL分析工具. 一.如何打开PL/SQL执行计划      开启PL/SQL这工具,推荐如下方法: 点击文件菜单,选择新建子菜单,选中解释计划窗口 键盘快捷方法,先按alt,然后按F,接着按N,最后按E 二.设置PL/SQL执行计划      初次打开“解释计划窗口”,只能看到基数.优化器.耗费等基本信息,其实这个可以在PL/SQL工具里面设置的.可以看到很多其它信息,如下所示:       三.看懂…
一.SQL语句到底是怎么执行的? 想了解SQL语句到底是怎么执行的,那就需要进行SQL语句执行计划分析. 那什么是SQL语句执行计划呢? 就是Oracle服务器执行SQL语句的过程.例如确定是否使用索引.表连接顺序.表连接技术等. 深入关注理解SQL语句的执行机制,至少要对关键模块的SQL语句进行Oracle SQL语句的执行计划分析.   分析内容至少包括如下方面:      1.表访问方式      2.表索引类型和策略      3.表连接类型和过程      4.排序过程      5.…
  一.性能优化中的角色分工 (1).老外的角色分工         在oracle性能优化方法论中,将IT系统中不同角色需要承担的性能优化工作罗列如下. 各司其职的角色分工 业务分析人员 1.业务需求优化 设计人员 2.数据库逻辑设计优化 3.应用流程设计优化 应用开发人员 4.SQL语句优化 5.数据库物理设计优化 数据库管理人员 6.内存和CPU的优化 7.磁盘I/O系统设计和优化 8.系统资源竞争的监测和优化 操作系统管理员 9.操作系统优化 网络管理员 10.网络配置优化       …
      性能工程师可以具备的专业素养 程序语言原理,包括:C.C++.java及jvm.ASP,因为建站大部分外围应用和中间件都是JAVA编写,大部分的电商平台采用的ASP编写,底层核心系统是C/C++编写: 数据库管理和性能优化,数据库永远的性能要点,包括:传统的关系型数据库oracle.db2.mysql.sql server等,更有对象型新贵数据库mongodb.hadoop.Cassandra等: kernel的实现(比如内存管理.文件系统.系统调用.线程与进程管理),如果不熟悉ke…
       <java performance><品悟性能优化 oracle><面向模式的软件架构-模式系统>读书笔记应用调优分享.      性能问题的解决,首先需要有理论和方法论的指导.否则东一耙,西一棒子,那就是二师兄耕地.既没有从总体上把握住性能问题,同时又浪费了大量宝贵的资源和时间.另外,缺乏方法论的指导,很多问题的解决也只会成为隔靴抓痒,无法从根本上解决问题. 一.关于性能优化的误区与反思 1.性能优化就是调参数 简单地认为性能优化就是调系统参数: 系统参…
开发过程中我们多少都会关注服务的性能,然而性能优化是相对比较困难,往往需要多轮优化.测试,属于费时费力,有时候还未必有好的效果.但是如果有较好的性能优化方法指导.工具辅助分析可以帮助我们快速发现性能瓶颈所在,针对性地进行优化,可以事半功倍. 性能优化的难点在于找出关键的性能瓶颈点,如果不借助一些工具辅助定位这些瓶颈是非常困难的,例如:c++程序通常大家可能都会借助perf /bcc这些工具来寻找存在性能瓶颈的地方.性能出现瓶颈的原因很多比如 CPU.内存.磁盘.架构等.本文就仅仅是针对CPU调优…
注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或  PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 第一篇 中,我们介绍了 XHProf .而在 第二篇 中,我们深入研究了 XHGui UI, 现在最后一篇,让我们把 XHProf /XHGui 的知识用到工作中! 性能调优 不用运行的代码才是绝好的代码.其他只是好的代码.所以,性能调优时,最好的选择是首先确保运行尽可能少的代码. OpCode 缓存 首先…
注:本文是纯技术探讨文,无图无笑点,希望您喜欢 一.前言 软件行业极其缺乏前端人才这是圈内的共识了,某种程度上讲,同等水平前端的工资都要比后端高上不少,而圈内的另一项共识则是--网页是公司的脸面! 几年前,谷歌的一项统计表明,如果亚马逊页面加载每慢 100ms,将影响他们 1% 的收入:如果谷歌页面加载慢 500ms,流量将锐减 20%,这个数据现在必将更加恐怖! 在前端高性能优化(一).(二)中,笔者介绍了一些关于前端优化的技术,这些技术都依赖于前人的辛苦努力,但我们仍要明白的是,前端的情况十…
通常认为,性能的改进是90 ~ 10 规则, 即10%的代码要对90%的性能问题负责.做过大型软件工程的程序员一般都知道这个概念. 然而对于软件工程师来说,有些性能问题是不可原谅的,无论它们属于10%或是90%,都是“必须”改进的.这里就讲讲其中的一个问题:用heap还是用stack的问题. Java, C#,和JavaScript的程序员一般都不用管自己创建的object是在heap里还是在stack里,因为对于这些语言,object 只能“生活在”heap里.这无疑对于程序员来说简单了许多.…
代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了.代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨:但是如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的. 代码优化的目标是: 1.减…
一.几个基本概念 GCRoots对象都有哪些 所有正在运行的线程的栈上的引用变量.所有的全局变量.所有ClassLoader... 1.System Class.2.JNI Local3.JNI Global4.Thread Block5.Busy Monitor6.Java Local7.Native Stack8.Unfinalized9.Unreachable10.Java Stack Frame11.Unknown 栈帧的解释 Java虚拟机栈(Java Virtual Machine…
首先牢骚几句...这一次性能优化针对的模块,初次开发阶段客户给的时间就非常少,俩月时间跳过设计一边需求分析一边编码,最后干出6000+的代码行.最终结果嘛,呵呵,除开一堆bug不说,性能就是个非常大的问题.这次客户想让我们给它优化了,给的工时仍然是少少少...常规方法都备齐之后性能没有太多改善,因为主要问题是出在业务逻辑结构上,在没有时间对整体结构动大手术的前提下,想出了这么几个偏方. 偏方一:我们的开发只针对IE浏览器,这一偏方对于其他浏览器可能不适用.要优化的主页面,完全是由JS动态加载数据…
四.我的结论 通过第三部分的数据数据分析,我觉得我们可以得到以下结论: 无论是在开发环境还是测试环下页面的首次加载速度结果都是:redux>immutablejs>mobx,但是他们之间的差距并不是很大. 10000条-100000条数据的页面加载时间的增量明显也高于10000-1000条数据的页面加载时间增量. 无论是在开发环境还是生产环境下点击完成某个todo所需的页面渲染速度结果都是:mobx>immutablejs>redux,正好和页面的首次加载时间相反,但是它们之间的差…
Linux主机怎么管,十八般兵器件件都可以算得上是瑞士军刀,称手的兵器一两件即可,最常用的,莫过于stat家族三兄弟吧. 计算机主要资源是什么?CPU.内存和磁盘?尽管现在云计算技术有多普及,查看一个系统是否健康运行还是需要从这3方面来着手开始调查的,调查出了原因,能改程序就改程序,改不了程序就花钱升级硬件,不行就只能忍着了. 老大mpstat,主要用来查看CPU报告,包括user/system.iowait和中断等. 老二vmstat,这里的m不是虚拟机的m,而是虚拟内存的m,当然主要看内存(…
参考文献 http://isky000.com/database/mysql-performance-tuning-hardware 由于对DBA 工作了解不多    所以只从网上简单的看了下  硬件的瓶颈分析, 觉得这个dba 写的文章相对通俗易懂些  ,文中的内容貌似是针对linux 系统下的  ,所以大家可以对应到 win 下的  相应 术语 在过往与很多人的交流过程中发现,在谈到基于硬件来进行数据库性能瓶颈分析的时候,常被大家误解为简单的使用更为强劲的主机或者存储来替换现有的设备. 个人…
上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉,虽然我们的对应用程序的代码最熟悉. 原因有这么几项: 系统庞大.业务复杂时,如果从代码审查入手,主观性因素影响较大:如果在各处代码中增加log统计响应时间,很不方便.也不科学,且工作量很大: 自己维护的代码调用了其他模块的接口,无从下手:与其他模块同事交流时,描述复杂.沟通困难: Oracle环境不…
DIV布局网页的第三种方式:覆盖.DIV覆盖方式经常应用于网页弹出框的制作,例如在网店系统中,当用户没有登录时,点击购买,系统弹出一个登陆框. 请看代码: HTML部分: XML/HTML Code复制内容到剪贴板 <body topmargin="0"> <div class="main"> 网页主体内容,包含网页其他栏目 </div> <!--蒙板--> <div class="mask"…
3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2 内存子系统(虚拟存储器) 在物理内存寻址时,Linux将其分成块或者内存“页”.内存页面过小,会造成管理内存时产生大的花销:内存页面大时,则容易造成内存的浪费. l  交换(物理内存不足) 内存的大小是固定的,当内存不够用时,内核会使用硬盘作为临时存储器,这个硬盘空间称为交换分区(swap space). 交换分区确…
原文链接:http://isky000.com/database/mysql-performance-tuning-index 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率. 为什么索引能提高数据访问性能?它会不会有“副作用”?是不是索引创建越多,性能就越好?到底该如何设计索引,才能最大限度的发挥其效能? 这篇文章主要是带着上面这几个问题来做一个简要的分析,同时排除了业务场景所带来的特殊性,请不要纠结业务场景的影响. 索引为什么能提高数据访问性能?很多人只知道…
一.什么是索引及索引的特点 索引是一种数据结构 索引的特点:查找速度快,排好序,数据结构 索引的数据结构类型有:BTREE索引和HASH索引,下面展示的是BTREE索引. BTREE:balance tree (平衡树) BTREE的特点实例: 假设有一张表,表中的数据为下图中的左侧,则索引中数据为下图中的右侧: 如果查询id为9,name为ii的,在表中需要查询9次,但是在二叉树中需要查询次. 二.索引的“类型” 1.聚集索引:节点就是数据本身,即索引表中存的就是数据本身 2.非聚集索引:节点…
WeTest 导读 企鹅电竞从17年6月接入weex,到现在已经有一年半的时间,这段时间里面,针对遇到的问题,企鹅电竞终端主要做了下面的优化: image组件 预加载 预渲染 Image组件 weex的list组件和image组件非常容易出问题,企鹅电竞本身又存在很多无限列表的weex页面,list和image的组合爆发的内存问题,导致接入weex后app的内存问题导致的crash一直居高不下. list组件问题 首先来说一下list,list对应的实现是WXListComponent,对应的v…
目录 确定思路 wait event的基本troubleshooting 虚拟文件信息(virtual file Statistics) 性能指标 执行计划缓冲的使用 总结 性能调优很难有一个固定的理论.调优本来就是处理一些特殊的性能问题. 通常一旦拿到一个服务器那么就先做一下性能检查.查看整个数据库是运行在什么样的状况下的. 分析收集的数据想像这种情况是否合理. 确定思路 一个数据库操作的时间都是执行时间+等待时间,在无法估计执行时间的时候看要看看等待时间. 那么等待时间分为锁等待时间和资源等…
Kafka高性能之道 高效使用磁盘 零拷贝 批处理和压缩 Partition ISR 高效使用磁盘 >顺序写cipan >Append Only(数据不更新,无记录级的数据删除,只会整个segment删除) >充分利用Page Cache >支持多Directory(可使用多Drive) 零拷贝 >传统模式下数据从文件传输到网络需要4次数据拷贝,4次上下文切换和2次系统调用 DMA先将文件拷贝到linux内核的Read buffer,cpu再将Read buffer里面的文件…
1.emplace_back减少内存拷贝和移动 emplace_back能通过参数构造对象,不需要拷贝或者移动内存,相比pusk_back能更好的避免内存的拷贝和移动,使容器插入元素性能得到进一步提升.几乎所有的标准库容器都增加了类型的方法:emplace,emplace_hint,emplace_front,emplace_after和emplace_back. 基本用法: #include <iostream> #include <vector> using namespace…