总结:windows下性能分析以及优化报告

zsl96      2022-02-09     510

关键词:

  

    性能分析以及优化

     使用的是vs2017自带的性能分析工具。

  主要分析了遇到的性能瓶颈,以及想到的优化方法,有的验证了,有的没有来得及。

  首先看整体用时以及cpu占有率。

  最终在我的设备上(I5-5200U 三星860EVO固态)运行时间约为27.3S。期间cpu占有率比较稳定.

技术分享图片

  前0.5秒cpu占用率低,大概是因为这段时间是刚开始读取文件,cpu并没有处理任务,后来便进入一边读取一遍计算的状态,cpu占有率就上来了,大概25%,但是还是不高。

  而且在这里我遇到一个十分奇怪的现象

 

技术分享图片

          技术分享图片

  直到代码运行结束,ReadByChar的占有率一直居高不下,占有一直接近100%,这就有点难以理解,讲道理最后cpu做的是事情应该是遍历1600多万个单词查找最大值,并且感觉应该会花许多时间,也就是说查找前十的top()函数应该在最后的的几秒占用率极高,但是没有发现这个现象,感觉应该还是这个性能分析结果自己理解有偏差把。

  我们先看看性能瓶颈:

技术分享图片

 

 

  ReadByChar是我写的字符读入,以及单词判定逻辑实现的函数,并且其调用了许多其他函数,所以它飘红是意料之中的。

  进入函数,首先占用最高的是

      技术分享图片

 

  openbychar是一个fstream的实例对象,get()为获取字符的方法,虽然条语句花费了许多时间,但这是必须的,处理思路就是要求必须一个一个的处理,基本没有优化余地,但是假如创建对象,而是使用c语言文件读取的方法,因为不需要创建对象调用方法,一定是可以快的,但是最后时间没来的及,就没有改。

  从这里我们也可以发现,文件读取(IO)是一个瓶颈,我当时有思考大幅度改善这个问题,不太确定多线程能否改善这个问题,因为在这个程序中应该是不处理完当前字符是不会读取下一个的,但是多线程后,可以将文件分成多份分别处理,再综合起来,因为从代码热行看,哈希表访问是非常快的,几乎没有耗费时间,这样最后结果整合应该也花费不了多少时间,但是无奈时间仓促,而且ddl前出现了bug,没有来得及验证,最近有时间一定试一下

技术分享图片

 

   word[sword]与wordend[sword]查找都用时较多,但这个也是没有办法的,这部分花费查找的时间也是必须的,而且选取hash已经是想到的最优的方法,再想优化,就得针对数据特征进行分析,更改默认的hash函数 ,让单词尽量减少冲突,这花费时间太多了,也不一定能比默认的hash快多少,所以就没搞。

  技术分享图片

 

  这个地方是我之前说过的唯一一处算是做出有卓越成效的优化,首先这两句是完成词组拼接,每判定成功就要执行一次,从最后单词结果看是执行了1600多万次,我之前图简单,直接写的是sphrase=sphrase+ " ”+sword,总时间占有率高达10%,但是这样写表达式右侧会先创建一个对象储存结果,然后再赋给sphrase,比较复杂,想变快应该调用string自带的拼接方法,我更改之后,占有率直接降到1%以下。

  其余的代码在整个代码运行过程中几乎不占多少时间。

  但是假如真的是追求极致的话,感觉有几个细节还是可以修改下的。

  1

  一些经常调用的函数中的变量对象可以用static修饰为静态,这样就不用每次调用时候都重新创建对象了,有这个特点的是getmax(),getmin()函数,这两个在输出结果文件,以及查找前十中会被多次用到,但是对于一个30s的任务,这样的优化根本没有什么作用。

  

技术分享图片

 

  2

           查找前十的方法,我是一次遍历,遍历过程中储存一个数组,每次替代其中的最小值,这样每读一个词,就要在10个词中查找最小值,这个从分析看并不是性能瓶颈,因为10个实在太少了,但是假如查找最小的10000个,100000个肯定就不能这么写了,我们虽然还是用一次遍历的方法,但是此时应该维护的是一个10000大小的最小堆。

  以上就是性能分析以及优化思路

  

  

  

 

android性能优化之内存泄漏检测以及内存优化(下)(代码片段)

...#xff0c;使得应用的整体内存处于一个健康的水平,下面总结一下内存优化的几个点:图片处理优化由于图片在应用中使用的较为频繁,而且图片占用的内存通常来说也比较大,举个例子来说,现在正常的手机基... 查看详情

android性能优化——性能优化的难题总结

前言现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一... 查看详情

android性能优化——性能优化的难题总结

前言现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一... 查看详情

android性能优化之内存泄漏检测以及内存优化(下)(代码片段)

上篇博客我们写到了Android中内存泄漏的检测以及相关案例,这篇我们继续来分析一下Android内存优化的相关内容。  上篇:Android性能优化之内存泄漏检测以及内存优化(上)。  中篇:Android性能优化之内... 查看详情

java中excel文件解析总结以及超大文件读写的分析报告(代码片段)

    在系统与系统之间进行数据传递时,经常需要使用Excel文件来进行数据的导入或者导出。因此,在Java语言实现这类需求时,往往会面临着数据的导入(解析)或者导出(生成)。Java中可以用来处理Excel文件的主流技术... 查看详情

前端性能的优化总结

前端性能优化可以分为两大类分别是页面级别优化包含了http请求数以及内联脚本位置优化,代码级别的优化包含DOM操作优化,CSS选择符优化以及图片优化等前端里面包含的内容是丰富的,它包括HTML,CSS以及JS和图片等各种各样... 查看详情

androidapp的启动优化总结(代码片段)

工欲善其事必先利其器,最近在启动优化上踩了不少坑,写篇文章记录下,也给大伙避避坑,节省些时间。启动优化是什么,完全可以顾名思义,本文就不赘述了。至于为什么要做性能优化–QAQ,大家d... 查看详情

windows下使用scoop安装allure2,以及与pytest生成报告(代码片段)

安装scoop环境要求Windows7SP1+/WindowsServer2008+PowerShell5(或更高版本,包括PowerShellCore)和.NETFramework4.5(或更高版本)必须为您的用户帐户启用PowerShell在PowerShell中输入Set-ExecutionPolicy-ExecutionPolicyRemoteSigned-ScopeCurrentUser 查看详情

内存监控以及优化(代码片段)

目录一、内存分析常用命令二、内存一般分析思路三、内存优化思路一、内存分析常用命令1、vmstat vmstat报告有关进程、内存、分页、块IO、陷阱、磁盘和cpu活动的信息。//每隔1秒打印一次root@ubuntu:/#vmstat1procs-----------memory-----... 查看详情

sqlserver数据库的高性能优化经验总结

...A本文主要向大家介绍的是正确优化SQLServer数据库的经验总结,其中包括在对其进行优化的实际操作中值得大家注意的地方描述,以及对SQL语句进行优化的最基本原则,以下就是文章的主要内容描述。  优化数据库的注意事项... 查看详情

android性能优化总结篇~(代码片段)

...问查阅。GitHub地址:https://github.com/733gh/Android-T3Android性能分析与优化实战进阶手册Android性能分析与优化实战进阶手册目录及内容展示第一章:Android性能优化概述第二章:卡顿优化第三章:启动速度优化第四章:内存优化第五章:布... 查看详情

hbase性能优化方法总结

一 表的设计1.1Pre-CreatingRegions默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法... 查看详情

微信小程序性能优化总结(代码片段)

对微信小程序进行性能优化,主要可以从两大方面进行分析:性能扫描工具和代码优化。一、使用性能扫描工具微信小程序提供了一个“体验评分”的工具插件,可以使用它获得微信小程序的一些性能数据和明显的缺... 查看详情

高并发场景下system.currenttimemillis()的性能问题的优化以及snowflakeidworker高性能id生成器(代码片段)

packagexxx;importjava.sql.Timestamp;importjava.util.concurrent.*;importjava.util.concurrent.atomic.AtomicLong;/***高并发场景下System.currentTimeMillis()的性能问题的优化*<p><p>*System.currentTimeMillis() 查看详情

团队项目之测试报告

...告 1.引言1.1编写目的本测试分析报告的编写目的在于总结测试阶段的测试情况以及分析测试结果,检测系统功能是否符合预期,并对测试质量进行分析。本报告也可作为测试质量参考文档提供给用户、测试人员、开发人员以... 查看详情

软件工程——数独总结报告(代码片段)

...。博客只是大致记录了我的开发过程,所有的各个项目的总结工作以及算法设计等都在相关的软件配置项的文档中。需求分析疑惑这方面的内容在需求分析中也做了说明,为避免老师没有看到,在这里特别粘贴出。换行问题关于... 查看详情

mysqltuner 性能优化报告

】mysqltuner性能优化报告【英文标题】:mysqltunerreportforperformanceoptimization【发布时间】:2011-10-2917:15:53【问题描述】:对MySQL优化技术非常陌生。请找到mysqltuner.pl的以下报告,并建议我应该更改my.cnf中的哪些变量以进行性能优化... 查看详情

测试基础总结

...是测试阶段最后的产出物文档,一份详细的测试报告总结,应该包含产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果的分析。二.编写测试报告1.编写测试报告的分析方向:1.1测... 查看详情