第三周——效能分析

本周效能分析作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/956

HTTPS地址:https://git.coding.net/jyj5951/wf.git

Part one 准备工作

  在开始性能分析前,我阅读了《构建之法》29-34页的“2.2性能分析工具”和邹欣老师有关效能分析的博客(博客地址:http://www.cnblogs.com/xinz/archive/2011/11/20/2255809.html),明白了效能分析的两大分析方法,即抽样(Samling)和代码注入(Instrumentation)。为之后对自己的程序进行效能分析有了一定的了解。

Part two 重定向读入文件

  以《战争与和平》作为输入文件,重定向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。ptime运行结果如下:

 

 

 

经过三次运行程序,发现我的程序运行时间较长,平均运行时间为8.604s,CPU使用率在20%至40%之间。

Part three 瓶颈预测及优化

1、瓶颈预测:

根据代码预测瓶颈应该在排序算法上,冒泡排序虽然是一种稳定的排序算法,但是当处理较多数据时,冒泡算法的速度会慢很多,所以本周我将普通冒泡算法更改为sort()函数。预测优化后预测程序运行速度会少两秒左右。排序算法代码如下:

        for (i = 0; i<n; i++) {
            for (j = 0; j<n - 1; j++) {
                if (frequency[j].count<frequency[j + 1].count) {
                    temp = frequency[j];
                    frequency[j] = frequency[j + 1];
                    frequency[j + 1] = temp;
                }
            }
        }

2、瓶颈显示:

以下是最耗费时间的三个函数,看到瓶颈发现并不是自己预测的排序函数,而是ucrtbased.dll和main函数,以及strcmp()函数。

3、瓶颈优化

通过查看函数的调用情况,发现运行次数最多的大部分是.dll文件,所以我将排序算法进行了修改,更改成sort()函数,更改后发现程序运行的时间减少了一秒多,所以快速、有效的排序算法对于优化程序起到一定积极的作用。

Part four 效能分析总结

在进行文件重定向要求编程的时候,发现程序不能在VS中进行效能分析,所以本周我效能分析的是之前编写的版本。虽然没有对新版本的程序进行效能分析,但是新旧版本的程序的核心代码是相同的,所以对旧版本进行效能优化在很大程度上可以反映出新版本的效能分析结果。

时间: 2024-08-10 05:40:49

第三周——效能分析的相关文章

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 进程上下文的切换 第一讲  Linux内核源代码介绍 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一般都基于此目录. init目录包含核心的初始化代码(不是系统的引导代

魏昊卿——《Linux内核分析》第三周作业:Linux系统启动过程

魏昊卿——<Linux内核分析>第三周作业:Linux系统启动过程 一.实验部分 实验指导 使用实验楼的虚拟机打开shell 1 cd LinuxKernel/ 2 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过<软件工程C编码实践篇>

LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS

LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 黄韧(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 回顾: [计算机三个法宝] 1)存储程序计算机 2)函数调用堆栈 3)中断 [操作系统两把宝剑] 1)中断上下文的切换:保存现场和恢复现场 2)进程上下文的切换 一.使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开

2017年软件工程第三次作业-2效能分析

要求0 以 战争与和平 作为输入文件,重读向由文件系统读入.连续三次运行,给出每次消耗时间.CPU参数       首先,我下载ptime.exe,不知道什么原因我下载下来以后运行老出现闪退现象.一直没法使用.我就接下来开始下载visual studio 2015,但是下载了一下午就是下不下来,我也很苦恼啊,电脑还是变成了巨难用,我下载的时候大概是缺少很多插件,我也不懂了.然后通过请教学长和同学,我使用了Very Sleepy CS软件来对功能进行效能分析. 由于我上次作业功能四没有实现,我没办

第三次作业-效能分析

一   对本周作业中的功能4(仅由文件重定向读入,不由控制台输入)做效能分析 1.cpu使用百分比 要求0 以 战争与和平 作为输入文件,重读向由文件系统读入.连续三次运行,给出每次消耗时间.CPU参数. (2分) Windows系统推荐使用 ptime.exe. 截图如下: 测试一: 测试二 测试三 总结时间   第一次 第二次 第三次 测试时间 141.063 135.549 136.606 要求1 给出你猜测程序的瓶颈.你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此

第二周-频统计效能分析

根据作业要求对个人项目词频统计进行效能分析 工具:vs2015自带的效能分析工具: 1.第一次分析结果 string.split()方法和dictionary.contain()方法占比例较高; 由于水平问题暂时未想到解决方案,会继续探索,完善个人项目;

【第二周】【作业三】效能测试

效能分析:之前从来没有用工具测试过程序的性能,以前只对程序的性能在理论上分析过,什么时间复杂度,空间复杂度之类的.只对影响程序性能有很粗浅的认识.认为多重循环层数多了性能低,递归算法性能低.今天我实际用了vs2013的工具看了一下程序的性能. 本来我只有dev c++这种轻量级ide使用,性能分析这个功能虽然有好像不太好用,为了完成作业,用格式化硬盘,重新分配磁盘空间等方法安装上了vs2013. 1.使用了vs2013中分析中的性能和诊断工具. 选择cpu使用率好像有点bug,所以选择了第四项,

Linux内核分析——第三周学习笔记20135308

第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 一.阅读Linux内核代码 本周我们要学习如何阅读Linux内核源代码,首先打开Lstest Stable Kernel:linux-3.18.6 arch/目录在Linux内核中占有相当庞大的代码量,因为Linux支持很多CPU,这个arch/x86目录下的代码是我们重要关注的代码 根目录中比较关

第五次作业——python效能分析与几个问题(个人作业)

第五次作业--效能分析与几个问题(个人作业) 前言 阅读了大家对于本课程的目标和规划之后,想必很多同学都跃跃欲试,迫不及待想要提高自身实践能力,那么就从第一个个人项目开始吧,题目要求见下. 阅读 阅读<构建之法>第一章至第三章的内容,并在下方作业里体现出阅读后的成果.特别是第2章中的效能分析及个人软件开发流程(PSP). 参考文章: <构建之法>教学笔记--Python中的效能分析与几个问题 四则运算器效能分析 软工第2次作业-四则运算器 题目描述 可以选择以下题目(或者自主选择题