• 作业2


    一   对本周作业中的功能4(仅由文件重定向读入,不由控制台输入)做效能分析

                   

                   因为我是用c语言写的代码,所以重定向不难 只需要用freopen(“”文件路径“”,“”读写方式“”,"stdin")来做。结束的时候不要忘了fclose()就可以,例子如截图

                                   

                  我个人认为效能分析是程序对cpu和内存占用的综合参数,完成这个功能真的很坎坷,我没做过测试,我做的功能是使用c++实现的,所以我下的是vc,我查了一下测试用vs,所以我下了个vs2012,花了我2个小时,安装的时候已经十点多了,晚上十二点还没有装完,所以我没有关机,早上发现没安装成功,心里非常烦躁。我早上6点就起来了。然后我又下了个vs2015这次下载3个小时,唯一感到庆幸的安装成功了。我上网百度了下怎么效能分析,操作如下 。

                                1 单击分析按钮

                                    2性能向导打钩

                                    3 选择cpu采样

    这样就开始进行了效能测试。

    运行程序

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<fstream>
     5 #include<string>
     6 #include<map>
     7 #include <iomanip>
     8 using namespace std;
     9 int main()
    10 {
    11     FILE *fp;
    12     char text[1024];
    13     char s[100];
    14     //gets(s);
    15     printf(">wf -s < the_show_of_the_ring
    ");
    16     fp=freopen("d:\是.txt","r",stdin);
    17 //fp=freopen("功能4.FILE","r",stdout==NULL);
    18     //fp=fopen(s,"r");
    19     int n=0;
    20     int i;
    21     map<string,int>my_map;
    22     while(fgets(text,1024,fp)!=NULL)
    23     {
    24 //        puts(text);
    25         i=0;
    26         while(text[i]!='')
    27         {
    28             char s[30];
    29             int j=0;
    30             while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z'))
    31             {
    32                 if(text[i]>='A'&&text[i]<='Z')
    33                 text[i]+='a'-'A';
    34                 s[j++]=text[i++];  
    35             }
    36             s[j]='';
    37             if(my_map[s]==0)
    38             n++;
    39             my_map[s]++;
    40             if(text[i]=='') break;
    41             else
    42             i++;
    43         }
    44          
    45     }
    46     fclose(fp);
    47     map<string,int>::iterator it;
    48     printf("
    
    ");
    49 //    printf(">wf  -s  test.txt
    ");
    50     cout<<"total"<<"  "<<n-1<<"  words"<<endl<<endl<<endl;
    51     for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++)
    52     {
    53         if(it->first=="")
    54         continue;
    55         cout<<left;
    56         cout<<setw(10)<<it->first;
    57         cout<<setw(10)<<it->second;
    58         cout<<"                                                            ";
    59         if(i%10==0) 
    60       //  cout<<'
    ';
    61       printf("
    ");
    62     }
    63     cout<<'
    ';  
    64     return 0;
    65 }
    View Code

     

    效能分析的时候,我也当我把vc的代码粘贴到vs里面发下需要调一下程序,我改了两个vs里面的设置,具体没截图,很难受,分析结果如下:

    1    cup使用百分比

      

    我在网上看的是摘要(S)  还有函数详细信息(D)

    结果如下   

    二  要求 0 以战争与和平 作为输入文件,重定向(我觉得老师写错了)由文件系统读入连续三次运行,给出每次消耗时间,cpu参数。

    1  

     

    2

    3

       

    要求一

     我觉得这段代码可以优化

     1 while(fgets(text,1024,fp)!=NULL)
     2     {
     3 //        puts(text);
     4         i=0;
     5         while(text[i]!='')
     6         {
     7             char s[30];
     8             int j=0;
     9             while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z'))
    10             {
    11                 if(text[i]>='A'&&text[i]<='Z')
    12                 text[i]+='a'-'A';
    13                 s[j++]=text[i++];  
    14             }
    15             s[j]='';
    16             if(my_map[s]==0)
    17             n++;
    18             my_map[s]++;
    19             if(text[i]=='') break;
    20             else
    21             i++;
    22         }
    23          
    24     }
    View Code

    可以把fgets()函数里面的数值变小,减小数组的存储空间

    主函数由98.05%变成了97.76%

     要求2

                       通过profile找出程序的瓶颈。给出程序运行中最花费时间的三个函数(或代码片段)。要求包括截图。

                                        

    我认为这三个函数最花费时间25853,此三个函数运行时间长,花费cpu多。

    要求3

    根据瓶颈,“”尽力而为“”地优化程序性能

    这个不会改进

    要求4

    再次profile,给出在要求1中花费时间的三个函数此时的花费,要求包括截图。

    花费了25140秒

    要求 5

    程序运行时间,根据在教师的机器上运行的速度排名,分为三档。此题得分,第一档20分,第二档10分,第三档5飞,功能测试不能通过的,0分

    17计算机技术 田继平
  • 相关阅读:
    分布式id 实现方式
    windows查看端口占用以及关闭相应的进程
    spring boot Swagger 集成
    WebJars 进行 css js 资源文件管理
    HTTP Proxy Servlet 代理服务使用
    Netflix Falcor获取JSON数据
    graphql 新API 开发方式
    既使用maven又使用本地Jar包
    maven 几个插件的使用
    Linux有问必答:如何检查Linux的内存使用状况
  • 原文地址:https://www.cnblogs.com/tianjiing/p/7592695.html
Copyright © 2020-2023  润新知