20200917-3 白名单

作业要求   https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11207

作业0(5分)

修改create.cpp文件,改成由命令行参数确定生成的数据的数据量。修改readme.md的对应部分。(要求贴出修改之后的代码和read.md。)

 

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main(int argc, char* argv[])
{
    
    srand((unsigned)time(NULL));
    int num = atoi(argv[1]);   //把命令行参数中文件名后的第一个字符串转化为整数
    for (int i = 0; i < num; i++);
    {
        cout << rand() << "\n";
    }
    cout << endl;

    return 0;
}

   

你看了一下代码,又说道:“老杨,你这结果倒是能对……但是”。你觉得代码的执行效率会比较低。但是你想引导他独立完成修改,你说:“我认为你应该profile一下你的代码,找到代码最慢的地方。”

profile?还好老杨看过《构建之法》,那本书中提到过效能分析。不过老杨不明白为啥要进行效能分析,但毕竟是在面试也不好把太多疑义说出来。所以只好照做。

 

 

作业1.

 

 

作业2

明显可以看出is_match函数耗时

作业三

bool is_match(int t, int w[], int w_length)
{   //修改成折半查找
    int low, high, mid;
    low = 0;
    high = w_length - 1;
    while(low<=high)
    {
        mid=(low+high)/2;
        if (w[mid]==t)
            return false;
        else if(w[mid]>t)
            high = mid - 1;
        else if(w[mid]<t)
            low = mid + 1;
    }
    return true;
}

  

 

 代码   https://e.coding.net/wowcy/brute/btute.git

作业四

 
is_match函数cpu占比  
运行时间
修改前 92.94% 19分51秒
修改后 1.60% 3分48秒

可以明显看出使用折半查找后is_match函数cpu占比减少,程序运行时间也缩小很多。

 

作业五

我觉得老杨的在每个.cpp文件开头都写上注释,标记上名字还是很值得我学习的。

我认为老杨的readme不是特别详细,比如

7 执行“create >q”生成文件q;

8 编译brute.cpp文件;

9 执行“brute -w q < whitelist > output”

在执行第九条之前应该将生成的q文件和whitelist放进和brute.cpp同一个目录下

这个地方让我费了好长时间。

 

不积跬步无以至千里,不积小流无以成江海。

 

posted on 2020-09-23 20:35  wowzcy  阅读(175)  评论(0编辑  收藏  举报

导航