• 20200917-3 白名单


    此作业具体要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11207

    白名单 SPEC

    Coding地址:https://e.coding.net/lhbat/baimingdan/baimingdan.git git pull前确保git init初始化仓库。

    网页访问:https://lhbat.coding.net/public/baimingdan/baimingdan/git/files

    作业0(5分)

    //create.cpp
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
     
    using namespace std;
     
    int main(int argc, char* argv[])
    {
        int number = atoi(argv[1]);//将命令行参数转数字
        srand((unsigned)time(NULL));
        for (int i = 0; i < number; i++)
        {
            cout << rand();
            if(i!=number-1) cout << "
    ";
        }
        cout << endl;
        return 0;
    }

    read.md文档如下:

    readme.md
    1. 安装vs2019;
    2. 配置环境变量;
    3. 编译create.cpp文件;
    4. 执行“create >whitelist 10”生成文件whitelist;
    5. 执行“create >q 1000”生成文件q;
    6. 编译brute.cpp文件;
    7. 执行“brute -w whitelist < q > output”。

    作业1(10分)

     

    运行“ -w q < whitelist > output”可以看到,当数据量较少时IO操作占比很大。

    作业2(10分)

    以biggerwhitelist和biggerq作为输入,对作业1中选择的代码再次进行profile,找到代码执行最“慢”的地方,截图为证并文字说明。

    可以看出,当数据量较大时main函数中的is_match函数下面的cout很耗时,很大原因是is_match函数效率不高。

    作业3(10分)

    根据作业2找到的最慢的地方,优化作业1中你选择的代码,在保证输出结果正确的前提下,减少老杨程序运行的时间。(优化后的代码需要你提交到git上,作为教师的判断依据。优化后的程序的名字应该是better.cpp或者better.cs。)

    地址:https://lhbat.coding.net/public/baimingdan/baimingdan/git/files

    bool erfen(int t, int low, int high)
    {
        int  mid;
        while (low<high)
        {
            mid = (high + low) / 2;
            if (w[mid] == t)
            {
                return true;//找到目标数字,成功
            }
            else if (w[mid] > t)
            {
                high = mid - 1;
            }
            else if (w[mid] < t)
            {
                low = mid + 1;
            }
        }    
        return false;//查找失败
    }

    作业4(5分)

    对作业3优化后的代码进行profile,结果与作业2的结果做对比。画表格并文字说明。

    可以看出,经过优化后,当数据量较多时IO操作成为占比较大的部分,这部分事无法避免的。

    做业5(5分)

    你觉得老杨的文档(readme),注释和代码风格又哪些问题,该如何改进?

    我觉得文档的内容略少,小白不容易懂,注释掉的暂时不使用的代码可以删掉,代码中的“t!  = w[i]”应该讲不等于作为一个整体。

  • 相关阅读:
    2020-11-15(第十一周)助教周小结
    2020-11-08(第十周)助教周小结
    2020-11-01助教周小结(第九周)
    Template.
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
    OO第一单元总结
    AFO
    Codeforces Round #424 (Div. 2)
  • 原文地址:https://www.cnblogs.com/lhbat/p/13717269.html
Copyright © 2020-2023  润新知