forked from embedded2016/phonebook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
附註.txt
58 lines (37 loc) · 1.89 KB
/
附註.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
git clone https://github.com/embedded2016/phonebook
gnome-open . 用圖形介面開啟當下的資料夾
findName(): 用linklist去尋找lastName
(in main.c)
#define DICT_FILE "./dictionary/words.txt" 定義字典檔
終端輸入man clock_gettime可看特定函式的說明
clock_gettime()為相對高精準度的timer
append()用來建立電話簿
IMPL不是定義在main.c內, 而是定義在Makefile內(看-DIMPL, 其中-D是以Makefile的語法定義macro)
(好處:不用在main.c內宣告)
assert(): 括號內的敘述式若不成立(=NULL)則終止程式
由assert(findName(input, e) && "Did you implement findName() in " IMPL "?"); 可看:
當assert中的敘述是後面接&&"字串", 字串會隨assert=NULL時印出
(vi 使用)
:$ 跳套行尾
:/ 搜尋
TODO在vim中表示待修正的程式碼(會有螢光標示)
(in phonebook_opt.c)
函式return NULL: 與main.c中的assert有關
make後會出現兩個執行檔, 分別為phonebook_orig和phonebook_opt(在cmd中直接輸入 ./執行檔名稱 就會執行)
make run: 每兩秒程式就會更新一次(見Makefile中的watch指令)
make plot: 會執行100次程式
(其中gnuplat的script在./phonebook/scripts/runtime.gp內)
make cache-test: 可用來觀察效能(透過perf)
應該要只有一份main.c: 同一份main.c可以對應到多種不同的實作
執行前記得先清空系統的cache
(from Vivian L)
觀察單一執行檔的效能
./phonebook_orig & sudo perf top -p $!
(切換到root帳號)
sudo su
在執行程式(phonebook_orig 和 phonebook_opt) 前,先清空 cache:
$ echo 1 | sudo tee /proc/sys/vm/drop_caches
lscpu: 可看L1, L2, L3的大小
sudo dmidecode -t cache 更清楚
(之前用的vi /proc/cpuinfo對於cache的資訊比較不詳盡)
http://dreamtails.pixnet.net/blog/post/27711971-%E6%9F%A5%E8%A9%A2linux%E4%B8%BB%E6%A9%9Fcpu,-ram%E8%88%87hdd%E7%A1%AC%E9%AB%94%E8%A6%8F%E6%A0%BC%E6%8C%87%E4%BB%A4%E7%AF%84%E4%BE%8B