第三次作业-效能分析
2017-09-26 13:27
309 查看
以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。
运行截图:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132106870-1778294141.png)
连续三次运行截图:
第一次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132150651-1984805710.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132204214-853541418.png)
消耗时间:4.3s CPU<20%
第二次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132438104-1359507967.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132505651-1706076783.png)
消耗时间:5s CPU<20%
第三次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132557479-17845241.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132622714-1831174492.png)
消耗时间:4.5s CPU<20%
给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。
此处使用了排序递归算法,可以使程序快速的进行下去。
通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926134619573-850645409.png)
函数1
函数2
函数3
函数大多调用了C#中定义好的函数,所以运行起来会使程序变慢。
再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图。
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926134636104-1408685889.png)
git地址: https://git.coding.net/ZhangEJ/wf.git
运行截图:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132106870-1778294141.png)
连续三次运行截图:
第一次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132150651-1984805710.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132204214-853541418.png)
消耗时间:4.3s CPU<20%
第二次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132438104-1359507967.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132505651-1706076783.png)
消耗时间:5s CPU<20%
第三次运行:
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132557479-17845241.png)
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926132622714-1831174492.png)
消耗时间:4.5s CPU<20%
给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。
foreach (string key in arrayList) { //keyArray[index] = key; keyArray[index] = Convert.ToString(key); valueArray[index] = Convert.ToInt32(hashtable[key]); index++; }
此处使用了排序递归算法,可以使程序快速的进行下去。
通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926134619573-850645409.png)
函数1
static void Main(string[] args) { bool flag = true; while (flag) { Console.WriteLine(); Console.WriteLine("效能分析输入1"); string choice = Console.ReadLine(); switch (choice) { case "1": string[] files = Directory.GetFiles("..\\..\\essay\\"); foreach (string f in files) { Console.WriteLine(f); FileUtil file3 = new FileUtil(); file3.CountEachWord(f, 3); } break; } } }
函数2
public void CountEachWord(string url, int choice) { int count = 0; StreamReader streamReader = new StreamReader(url); string line; Regex regex = new Regex(@"\b[A-Za-z]+[A-Za-z0-9]*"); while ((line = streamReader.ReadLine()) != null) { MatchCollection matchCollection = regex.Matches(line); foreach (Match word in matchCollection) { string words = word.ToString(); if (hashtable.Contains(words)) { int j = Convert.ToInt32(hashtable[words]) + 1; hashtable[words] = j; } else { hashtable.Add(words, 1); } } } count = hashtable.Keys.Count; Console.WriteLine("total: " + count); Console.WriteLine(); streamReader.Close(); SortHashtable(hashtable, choice); }
函数3
private void QuickSort(int[] valueArray, string[] keyArray, int v1, int v2) { if (v1 < v2) { int index2 = Division(valueArray, keyArray, v1, v2); QuickSort(valueArray, keyArray, index2 + 1, v2); QuickSort(valueArray, keyArray, v1, index2 - 1); } }
函数大多调用了C#中定义好的函数,所以运行起来会使程序变慢。
再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图。
![](https://images2017.cnblogs.com/blog/1234677/201709/1234677-20170926134636104-1408685889.png)
git地址: https://git.coding.net/ZhangEJ/wf.git
相关文章推荐
- 第三次作业_02效能分析
- 软件工程第三次作业-2效能分析
- 2017年软件工程第三次作业-2效能分析
- 软件工程第三次作业 - 效能分析
- 个人第三次软件工程作业-效能分析
- 第三次作业-效能分析
- 2017软件工程第三次作业--效能分析
- Linux内核分析 第三次作业
- 第三次作业——个人作业——软件产品案例分析
- 第三周作业之效能分析
- 第三次作业——个人作业——软件产品案例分析
- 第三次作业——个人作业,k米案例分析
- 第三次作业——个人作业——软件产品案例分析
- 第三次作业——个人作业——软件产品案例分析
- 第三次作业——个人作业——软件产品案例分析
- 数值分析第三次大作业
- 第三次个人作业——关于K米(Andorid)的案例分析
- 软件工程第三周作业-效能分析
- 第三次作业——个人作业——软件产品案例分析
- [2017BUAA软工]第三次博客作业:案例分析