zoukankan      html  css  js  c++  java
  • 魏新 20190919-3 效能分析

    此作业的要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7628

    修改后的代码地址为:https://e.coding.net/Eustia/wf.git

    要求0

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

    cpu参数:Intel Core i7-4710MQ 2.50GHz

    消耗时间:4.872s,4.811s,4.818s

    平均消耗时间:4.834s

    截图如下:

    要求1

    给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。

    对字符出现次数的排序进行了很多次无用排序,导致时间增多。我认为在此处优化会有最佳效果。

    //对单词出现频次进行排序
    for(i=0;i<50000;i++)
    {
        q[i]=wd[i].time;
    }
    sort(q,q+50000,greater<int>());

    要求2

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

    由于上周使用的codeblocks进行编程,这周为了效能分析把代码迁到了vs2017上面,但是经过了好几个小时的调试依旧无法成功进行效能分析,于是无法给出截图。猜测程序运行中最花费时间的3个函数或代码片段为:

    for(i=0;i<total+1;i++)
    {
        q[i]=wd[i].time;
    }
    sort(q,q+total+1,greater<int>());
    for(j=0;j<total;j++)
    {
        if(wd[j].time==q[i])
        {
            j=j+flag;
            while(wd[j].time!=q[i])
            {
                j=j+1;
                flag++;
            }
            printf("%s",wd[j].s_wd);
            strcpy(c_temp,wd[j].s_wd);
            len=strlen(wd[j].s_wd);
            s=15-len;
            temp=q[i];
            break;
        }
    }      
    while((c=getchar())!=EOF)
    {
        if(fflag==1)
        {
            if((c>=65&&c<=90)||(c>=97&&c<=122))
            {
                if(c>=65&&c<=90)
                {
                    c=c+32;
                }
                word[ii]=c;
                ii++;
            }
            fflag=0;
        }
        else
        {
            if((c>=65&&c<=90)||(c>=97&&c<=122)||(c==39)||(c==45))
            {
                if(c>=65&&c<=90)
                {
                c=c+32;
                }
                word[ii]=c;
                ii++;
            }
            else
            {
                if(ii>0)
                {
                    wdcount(word);
                    memset(word, 0, sizeof(word));
                    ii=0;
                    fflag=1;
                }
            }
        }
    }

    要求3

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

    由于该功能较为简单,只需修改参数即可,修改后的代码如下:

    for(i=0;i<total+1;i++)
    {
        q[i]=wd[i].time;
    }
    sort(q,q+total+1,greater<int>());

    优化后的程序运行截图如下:

    运行时间为:4.776s,4.790s,4.796s

    平均运行时间为:4.787s

    要求4

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

    无法成功进行效能分析,故此题无法完成。

  • 相关阅读:
    PHP学习九--会话控制session和cookie
    PHP学习八--正则表达式
    PHP学习六--类和对象
    PHP学习五--函数
    PHP学习四--数组
    《30天自制操作系统》day08——鼠标控制与32位模式切换
    java 中 静态块的作用
    学习(一)
    asp中 grideview 更新 无法获取值 解决办法
    ASP.NET中的GridView自带的编辑更新功能
  • 原文地址:https://www.cnblogs.com/Eustia/p/11584297.html
Copyright © 2011-2022 走看看