1. 程式人生 > 實用技巧 >CentOS7安裝並配置gitlab

CentOS7安裝並配置gitlab

白名單 SPEC

Coding地址: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 << "\n"; } 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-wwhitelist < q > output”。

作業1(10分)

執行“-wq < 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]”應該講不等於作為一個整體。