精华内容
下载资源
问答
  • win10优化工具

    2018-09-26 09:46:53
    win10优化工具

    win10优化工具

    展开全文
  • c++优化工具Gprof

    千次阅读 2017-02-20 22:21:23
    c++优化工具Gprof
    
    

    优化准则:

    1. 二八法则:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的;在优化实践中,我们将精力集中在优化那20%最耗时的代码上,整体性能将有显著的提升;这个很好理解。函数A虽然代码量大,但在一次正常执行流程中,只调用了一次。而另一个函数B代码量比A小很多,但被调用了1000次。显然,我们更应关注B的优化。
    2. 编完代码,再优化;编码的时候总是考虑最佳性能未必总是好的;在强调最佳性能的编码方式的同时,可能就损失了代码的可读性和开发效率;

    工具:

    1 Gprof

    工欲善其事,必先利其器。对于Linux平台下C++的优化,我们使用gprof工具。gprof是GNU profile工具,可以运行于linux、AIX、Sun等操作系统进行C、C++、Pascal、Fortran程序的性能分析,用于程序的性能优化以及程序瓶颈问题的查找和解决。通过分析应用程序运行时产生的“flat profile”,可以得到每个函数的调用次数,消耗的CPU时间(只统计CPU时间,对IO瓶颈无能为力),也可以得到函数的“调用关系图”,包括函数调用的层次关系,每个函数调用花费了多少时间。

    2. gprof使用步骤

    1) 用gcc、g++、xlC编译程序时,使用-pg参数,如:g++ -pg -o test.exe test.cpp编译器会自动在目标代码中插入用于性能测试的代码片断,这些代码在程序运行时采集并记录函数的调用关系和调用次数,并记录函数自身执行时间和被调用函数的执行时间。
    2) 执行编译后的可执行程序,如:./test.exe。该步骤运行程序的时间会稍慢于正常编译的可执行程序的运行时间。程序运行结束后,会在程序所在路径下生成一个缺省文件名为gmon.out的文件,这个文件就是记录程序运行的性能、调用关系、调用次数等信息的数据文件。
    3) 使用gprof命令来分析记录程序运行信息的gmon.out文件,如:gprof test.exe gmon.out则可以在显示器上看到函数调用相关的统计、分析信息。上述信息也可以采用gprof test.exe gmon.out> gprofresult.txt重定向到文本文件以便于后续分析。

    以上只是gpro的使用步骤简介,关于gprof使用实例详见附录1;

    实践

    我们的程序遇到了性能瓶颈,在采用架构改造,改用内存数据库之前,我们考虑从代码级入手,先尝试代码级的优化;通过使用gprof分析,我们发现以下2个最为突出的问题:

    1.初始化大对象耗时

    分析报告:307 6.5% VOBJ1::VOBJ1@240038VOBJ1
    在整个执行流程中被调用307次,其对象初始化耗时占到6.5%。

    这个对象很大,包含的属性多,属于基础数据结构;
    在程序进入构造函数函数体之前,类的父类对象和所有子成员变量对象已经被生成和构造。如果在构造函数体内位其执行赋值操作,显示属于浪费。如果在构造函数时已经知道如何为类的子成员变量初始化,那么应该将这些初始化信息通过构造函数的初始化列表赋予子成员变量,而不是在构造函数函数体中进行这些初始化。因为进入构造函数函数体之前,这些子成员变量已经初始化过一次了。

    在C++程序中,创建/销毁对象是影响性能的一个非常突出的操作。首先,如果是从全局堆中生成对象,则需要首先进行动态内存分配操作。众所周知,动态分配/回收在C/C++程序中一直都是非常耗时的。因为牵涉到寻找匹配大小的内存块,找到后可能还需要截断处理,然后还需要修改维护全局堆内存使用情况信息的链表等。

    解决方法:我们将大部分的初始化操作都移到初始化列表中,性能消耗降到1.8%。

    2.Map使用不当

    分析报告:89 6.8% Recordset::GetField
    Recordset的getField被调用了89次,性能消耗占到6.8%;
    Recordset是我们在在数据库层面的包装,对应取出数据的记录集;(用过ADO的朋友很熟悉);由于我们使用的是底层c++数据库接口,通过对数据库原始api进行一层包装,从而屏蔽开发人员对底层api的直接操作。这样的包装,带来的好处就是不用直接与底层数据库交互,在代码编写方面方便不少,代码可读性也很好;带来的问题就是性能的损失;

    分析:(2点原因)
    1)在GetField函数中,使用了map[“a”]来查询数据,如果找不到“a”,则map会自动插入key ”a”,并设value为0;而m.find(“a”)不会自动插入上述pair,执行效率更高;原有逻辑:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        string Recordset::GetField(const string &strName)
    {
        int nIndex;
        if (hasIndex==false)
        {
            nIndex = m_nPos;
        }
        else
        {
            nIndex = m_vSort[m_nPos].m_iorder;
        }
        if (m_fields[strName]==0)
        {
            LOG_ERR("Recordset::GetField:"<<strName<<" Not Find!!");
        }
        return m_records[nIndex].GetValue(m_fields[strName] - 1) ;
    }

    改造后的逻辑:

    1
    2
    3
    4
    5
    6
    7
        string Recordset::GetField(const string &strName)
    {
        unordered_map::iterator iter = m_fields.find(strName);
        if (iter == m_fields.end())
        {
            LOG_ERR("[Recordset::GetField] "<< strName <second - 1) ;
    }

    调整后的Recordset::GetField的执行时间约是之前的1/2;且易读性更高;

    2)在Recordset中,对于每个字段的存储,使用的是map m_fields; g++中的stl标准库中默认使用的红黑树作为map的底层数据结构;
    通过附录中的文档2,我们发现其实有更快的结构, 在效率上,unorder map优于hash map, hash map 优于 红黑树;如果不要求map有序,unordered_map 是更好的选择;
    解决方法:将map结构换成unordered_map,性能消耗降到1.4%;

    总结

    我们修改不到30行代码,整体性能提升10%左右,效果明显;打蛇打七寸,性能优化的关键在于找准待优化的点,之后的事,也就水到渠成;

    附录:

    附1:prof工具介绍及实践
    附2: map hash_map unordered_map 性能测试

    展开全文
  • json格式优化工具

    千次阅读 2019-04-19 20:05:34
    json格式优化工具 链接:https://pan.baidu.com/s/19iXOe-PUePftmnQO2rMjJw 提取码:76x3 复制这段内容后打开百度网盘手机App,操作更方便哦

    json格式优化工具

    链接:https://pan.baidu.com/s/19iXOe-PUePftmnQO2rMjJw
    提取码:76x3
    复制这段内容后打开百度网盘手机App,操作更方便哦

    展开全文
  • SQL优化工具

    千次阅读 2013-12-30 16:45:38
    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析、约束及表间关系  Oracle体系结构1 Oracle体系结构2  ...高级SQL优化(三) 常用优化工具  PPT和源码下载: http://sishuok.

    目录:

    Oracle数据完整性和锁机制 
    索引及优化之表分析 
    表分析、约束及表间关系 
    Oracle体系结构1
    Oracle体系结构2 
    海量数据库及分区1 
    海量数据库及分区2 
    海量数据库及分区3 
    海量数据库及分区4 
    高级SQL优化(一)  
    高级SQL优化(二)  
    高级SQL优化(三) 常用优化工具 
    PPT和源码下载:    http://sishuok.com/forum/posts/list/6365.html
    配套视频课程
        Oracle性能优化 http://sishuok.com/product/601 
        海量数据库和高级SQL优化 http://sishuok.com/product/602
     
     
    SQL*PLUS下使用AUTOTRACE
    1.AUTOTRACE简介  
      AUTOTRACE是SQL*Plus的一项功能,其作用是自动跟踪SQL语句,为SQL 语句生成一个 执行计划并且提供与 该语句的处理有关的统计信息
    SQL*Plus AUTOTRACE 可以用来替代 SQL Trace 使用,AUTOTRACE 的好处是不必设置跟踪文件的格式,并且它将自动为 SQL 语句显示执行计划。AUTOTRACE与执行计划的区别是AUTOTRACE 分析和执行语句;而EXPLAIN PLAN仅分析语句,而不负责执行语句。
       AUTOTRACE在SQL*PLUS下执行,使用AUTOTRACE不会产生跟踪文件。
    2.配置AUTOTRACE
      (1).确保表PLAN_TABLE已经创建,如果没有则如下创建:
      
      (2).确保角色plustrace已经创建,如果没有则如下创建:
     
    3.使用AUTOTRACE
     
    4. AUTOTRACE设置命令
    序号
    命令
    解释
    1
    SET AUTOTRACE OFF
    此为默认值,即关闭Autotrace
    2
    SET AUTOTRACE ON
    产生结果集和解释计划并列出统计
    3
    SET AUTOTRACE ON EXPLAIN
    显示结果集和解释计划不显示统计
    4
    SETAUTOTRACE TRACEONLY
    显示解释计划和统计,尽管执行该语句但将看不到结果集
    5
    SET AUTOTRACE TRACEONLY STATISTICS
    只显示统计
    参见每个设置的现场举例
     
    5. AUTOTRACE STATISTICS含义
    序号
    列名
    解释
    1
    recursive call
    递归调用SQL的个数;Oracle在执行这个SQL的时候,有时候会生成很多额外的SQL语句,这个就称为递归调用
    2
    db block gets
    从buffer cache中读取的block的数量
    3
    consistent gets
    从buffer cache中读取的undo数据的block的数量
    4
    physical reads
    从磁盘读取的block的数量
    5
    redo size
    DML生成的redo的大小
    6
    sorts (memory)
    在内存执行的排序量
    7
    sorts (disk)
    在磁盘上执行的排序量,如果memory空间使用不足,是会使用disk的空间的
    8
    bytes sent via SQL*Net to client
    利用sql*net传入到client的字节数;
    9
    bytes received via SQL*Net from client
    利用sql*net传出client的字节数;
     
    使用SQL调优顾问
    删除掉bigtab和smalltab上的所有索引:
     
      
     
    既然上述语句性能很差,那么怎么优化呢?幸运的是Oracle提供一个工具称为SQL调优顾问。从Oracle 10g起,可以使用SQL调优顾问 (SQL Tuning Advisor ,STA)来获得一个性能很差的语句的优化结果。STA的特点是简单、智能,DBA只需要调用函数就可以给出一个性能很差的语句的优化结果,从而做到有的放矢!
    使用DBMS_SQLTUNE包来创建优化任务并阅读优化建议:
    创建完成后验证是否完成:
     
    创建完成后验证是否完成:
     
    单击该条目查看优化结果
    也可以通过SQL语句来查看结果,此方法是我们最喜欢的方法:
      
    进行优化:
    优化后在使用autotrace:
    优化后在使用autotrace:
    结论:
     
    项目
    优化前
    优化后
    倍数
    从持久层获取consistent gets(从buffer cache中读取的undo数据的block的数量)
    21688
    6950
    3
    物理读physical reads(从磁盘读取的block的数量)
    21589
    6928
    3
    递归调用recursive call
    0
    1
    N/A
    时间(毫秒)
    2070
    1078
    2
    使用STA能快速定位性能瓶颈,从而为性能优化提供了准确的依据!
     
    实时SQL监视
       实时SQL监视(real-time SQL Monitorning)是Oracle 11g的另外一个新功能,其作用是允许用户监视正在执行的SQL。默认情况下,当使用并行查询、或者当SQL执行的CPU或I/O超过5秒钟时会自动启动。
    也可以使用优化提示强制使用实时SQL监视功能,如下:
     select /*+ monitor */  count(*)
      from bigtab a, smalltab b
       where  a.object_name=b.table_name
      如果要强制不使用实时SQL监视功能,则也可以使用优化提示:
    select /*+ no_monitor */  count(*)
      from bigtab a, smalltab b
       where  a.object_name=b.table_name
     
       与实时SQL监视相关的系统视图包括:
    uV$SQL_MONITOR
    uV$SQL_PLAN_MONITOR
    uV$ACTIVE_SESSION_HISTORY
    uV$SESSION
    uV$SESSION_LONGOPS
    uV$SQL
    uV$SQL_PLAN
    对于刚刚监视的结果,可以使用DBMS包读取:
    select dbms_sqltune.report_sql_monitor from dual;
     
    1.实时SQL监视示例1-执行超过5秒的SQL
      
     
     在OEM中查看监视结果,选择“性能”->“其它监视链接”->“SQL Monitoring”:
     
     
     
     查看具体的监视报告(图形化):
     
    单击“文本报告”,则:
    使用DBMS包查看监视结果:
     
    2.实时SQL监视示例2-使用优化提示强制监视
      
      
    结论:
    1.实时SQL监视通过OEM查看其监视报告时,具有更好的图形化的展示效果,因此更加直观
    2.如果监视的SQL语句发现具有全表扫描等执行计划的特征,或者CPU时间和I/O时间比较长,则可以与SQL调优顾问接合起来,不但能获知性能瓶颈,而且能获得Oracle推荐的优化策略。
    3.实践中,程序员往往不加思考的按照自己的理解和经验编写SQL,此举在90%的项目中存在,从而造成项目产品投用后很快就产生各种性能瓶颈,正确的做法应该是 在准备好足够的测试数据,并且监视每一条SQL并在开发的初始阶段即 优化之
     私塾在线独家原创
    展开全文
  • Surface pro优化工具

    千次阅读 2017-08-09 00:11:32
    Surface pro优化工具
  • 集成了多个凸优化工具箱,并且语法更为简单,方便使用。可以解决SDP和GP等问题
  • MATLAB安装优化工具包OPTI Toolbox

    千次阅读 热门讨论 2020-08-01 15:50:34
    Matlab自带优化工具箱提供了fmincon等诸多函数解决含约束条件的优化问题,但如果需要求解含整数约束的混合优化问题,fmincon就不是特别合适了,虽然提供了遗传算法优化函数ga,不过速度可能比较慢,因此有时候需要...
  • Matlab--优化工具

    千次阅读 2019-11-14 19:05:45
    优化工具优化工具箱(Optimization Toolbox)是对MATLAB数值计算环境扩展得一组函数,它包括以下最优化方法的内容: 1.无约束非线性最小化(Unconstrained nonlinear minimization) 2.有约束非线性最小化...
  • 网站性能优化工具

    2015-01-01 21:23:11
    网站性能优化(WPO)已经...国外大牛Steve Souders在参加WebPerfDays London期间,收集了大量常用的网站性能优化工具,这里和大家分享下。 常用的网站性能优化工具: WebPagetestCuzillionChrome Dev ToolsSpeed
  • matlab凸优化工具箱——cvx简介

    万次阅读 2019-04-20 09:57:24
    matlab凸优化工具箱——cvx简介
  • 优化工具包CVX快速入门

    千次阅读 2019-04-20 14:54:38
    优化工具包CVX快速入门
  • 鲁棒优化工具包-XProg和RSOME

    千次阅读 热门讨论 2020-07-15 23:37:59
    鲁棒优化工具包-XProg和RSOME1.XProg和RSOME2.错误分析 记录一下鲁棒优化学习内容。之前研究过一段时间的鲁棒优化,但由于没有数据也就没有继续研究下去。最近有时间,觉得鲁棒优化比较有意思就继续研究一下。主要...
  • DB2自动优化工具

    2014-06-17 11:44:37
    DB2自动优化工具 db2 => AUTOCONFIGURE APPLY DB ONLY
  • 系统优化工具ccleaner

    2018-10-24 20:09:29
    ccleaner是一款来自国外的超级强大的系统优化工具,能够清除所有的垃圾文件,全面保护系统隐私。ccleaner的体积小,运行速度极快,可以对文件夹、历史记录、回收站等进行垃圾清理,并可对注册表进行垃圾项扫描、清理...
  • 搜索引擎优化工具-网站优化工具

    千次阅读 2005-12-22 14:44:00
    搜索引擎优化工具-网站优化工具Google排名监测工具下载:http://www.cleverstat.com/google-monitor.htm查询关键字使用频率工具:http://inventory.overture.com/d/searchinventory/suggestion蜘蛛模似器...
  • Facebook App 优化工具 ReDex 优化的 6 点及未优化的一大方面 ReDex 是 Facebook 开源的工具,通过对字节码进行优化,以减小 Android Apk 大小,同时提高 App 启动速度。 GitHub:ReDex,官网主页:...
  • SQL查询优化工具--EverSQL

    千次阅读 2020-01-05 01:27:43
    EverSQ是L一款免费的、开源的、在线SQL查询优化工具。EverSQL提供了监控SQL查询性能的最简单方法,具有以下功能: 轻松优化SQL查询 简单易用 配有直观的界面 无需下载或安装。 只需上传或输入查询,上传架构并获得...
  • Mac系统清理优化工具 CleanMyMac X for mac v4.5.3 CleanMyMac 是一款专业的Mac清理工具,只需要一键智能清理,便能让Mac恢复原始最佳性能,是MAC系统必不可少的工具。CleanMyMac自身拥有一个安全数据库,它是一个...
  • 自动刷百度下拉词优化工具

    万次阅读 2019-04-02 18:37:21
    自动刷百度下拉词优化工具 下拉通刷词软件系统可根据主词联想快速的刷出你所需要的关键词,一般下拉排名在前4位,软件100%有效,出词率达到80%以上,用户后台提交下拉词后,一般3-10天即可见效,尤其是设置多任务刷...
  • Matlab优化工具箱和模拟退火算法

    千次阅读 2020-01-31 09:59:40
    Matlab优化工具箱主要有以下4种求解器: 1.最小值优化 2.多目标最小值优化 3.方程求解器 4.最小二乘(曲线拟合)求解器 一.最小值优化: 1.标量最小值优化:使用函数fminbnd 例:对边长为3m的正方形铁板,...
  • MATLAB优化工具箱 OPTI的安装

    千次阅读 2019-10-12 10:47:46
    OPTI是一个开源的MATLAB优化工具箱,相比MATLAB自带非线性优化求解函数fmincon,该优化器更加人性化,同时也有丰富的求解方法可供选择 一、下载 本文介绍 OPTI toolbox 安装方法: 下载完毕后解压放到合适的文件夹...
  • Android应用多数都因功能模块添加、重构等原因,APK越来越大,所以APK需要瘦身,其中一个重要的瘦身途径就是:...下面介绍两个图片资源优化工具: 一、 tinypng(压缩PNG/JPG)  链接: https://tinypng.com/
  • 开源的SQL查询优化工具--EverSQL

    千次阅读 2020-04-19 08:11:34
    开源的SQL查询优化工具–EverSQL 概述 一般来说,SQL查询优化器分析给定查询的许多选项,预估每个选项的成本,最后选择成本最低的选项。如果查询优化器选择了错误的计划,则性能差异可能从几毫秒到几分钟。幸运的是...
  • matlab优化工具箱笔记(1)

    万次阅读 多人点赞 2018-02-20 00:15:36
    1、线性规划[x,fval]=linprog(c,A,b,Aeq,Beq,VLB,VUB)用于解决min(z)=cX%%求满足条件的X与已定系数c乘积之和的... matlab优化工具箱求解优化问题的主要函数3.优化函数的输入变量4.优化函数的输出变量5.options的设...
  • 百度seo搜索引擎优化工具

    千次阅读 2018-01-07 16:27:05
    百度seo搜索引擎优化工具 百度链接提交工具: http://zhanzhang.baidu.com/linksubmit/index  百度博客提交: http://ping.baidu.com/ping.html 百度信誉申请: http://trust.baidu.com/vstar/feedback ...
  • [MySQL]SQL优化工具SQLAdvisor

    千次阅读 2017-07-25 10:25:47
    SQL优化工具SQLAdvisor
  • 163.Oracle数据库SQL开发之 SQL优化——优化工具 欢迎转载,转载请标明出处: 其他一些优化工具如下。 1. OEM Diagnostics Pack Oracle Enterprise Manager DiagnosticsPack(Oracle 企业管理器诊断包)捕获操作系统...
  • 使用matlab优化工具箱求解规划问题

    千次阅读 2019-01-23 18:20:01
    matlab优化工具箱 在命令行中输入optimtool,即可打开优化工具箱 fmincon函数 在matlab中,可以使用函数x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)求解非线性规划问题。 fun为目标函数 x0为不等式的...
  • Ubuntu 16.04安装Stacer系统优化工具 https://www.linuxidc.com/Linux/2017-07/145517.htm
  • Android APK优化工具Zipalign详解

    千次阅读 2016-09-08 17:08:24
    Android SDK中包含了一个用于优化APK的新工具zipalign。它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”...Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,957
精华内容 35,582
关键字:

优化工具