Hw3 開發紀錄

效能分析

  • 使用 perf 取得 cache-missescache-references 兩個事件
  • 借用 phonebook 的測時函式,來紀錄運行時間
 
使用 echo 來蒐集執行時間的資訊
main 的輸出是這樣的:a\nTime for smallest_character(): 0.000005238 sec,不過對於畫圖只想取得中間的時間資訊,所以可以利用 sed 這個 command 來幫助取得這個資訊。
  • 使用到的格式為:sed -ne 's/regex/replacement/p' 
  • -n:不印出符合的字串
  • -e:後面接要執行的 command 或 script
  • s/regex/replacement/p:用 regular expression 來 match 字串,match 到的區間可以在  replacement 中取得,使用 \1\2~\8 來取得第 n 個被 match 到的區間。p:印出 replacement 指定的區間
  • 使用的 regex:s/^.*[^0-9]\([0-9]*\.[0-9]*\) sec.*$/\1/p 
  • ^:從字串開頭開始
  • .*:任意數個字元
  • [^0-9]:非 0-9 的字元
  • ():指定 match pattern,為第一個,可以透過/1取得 match 這個 pattern 的 substring
  • [0-9]*\.[0-9]*:好多個數字 點 好多個數字這樣
  • sec.*$:match 到 sec 後,任意數個字元到尾
  • 最後用一個變數來接輸出 variable=$( 運行程式 | parse execution time ),再一併 echo 到指定的輸出檔
 
  • 參考資料
 

Quiz 2

題目需求
  • Input:一個排序過後的字串,及一個指定字元
  • Output:回傳字串中比指定字元還要大的最小字元,如果不存在,則回傳字串中最小的字元
  • Function:char smallest_character( char str[], char c ) 
 
邊界情況
  • str[]為空字串
  • c\0 
 
實驗設計
  • 輸入 case
  • 由亂數預先生成字串,並整理或後,作為測試輸入
  • 搜尋字串也是亂數生成
  • 一定要包含邊界情況
  • 驗證結果正確
  • 使用 shell script 配合 grep ,來檢查輸出是否正確
$1 "bcdgjklmoqrsuvxzABDELMQRSTUXZ" "J" | grep 'b' &> /dev/null
if [ $? == 0 ]; then
    echo "Case 1:Correct."
else
    echo "Case 1:Wrong."
fi
 
演算法