→ uranusjr: We will build a wall and C++ is gonna pay for it01/02 15:52
推 CaptainH: 樓上XDD01/02 15:56
※ DonaldTrunnp:轉錄至看板 Programming
推 descent: 請問記憶體比較圖是怎麼做的? 01/02 22:31
那是用 Gnuplot 畫的~
推 descent: 可以分享怎麼測量記憶體使用率的嗎?01/02 22:46
Fork child process 搭配 pmap: ./mem-trace COMMAND [ARGS]
https://gist.github.com/kevin-dong-nai-jia/a4aebf788c133f0e042fb4235d2759e6
推 shec1213: Make C Language great again01/02 23:04
C plus plus is fired. ;)
→ final01: 做的比C++還威...?01/03 00:24
在大部分的情況下都有較好的表現 唯一的比較嚴格的是 iterator invalidation rules
甚至搭配 GCC extension __builtin_prefetch() 能達到 30% 以上 speed up (Xeon E3)
但事實上 LL cache load 的速度完全比不上 iterate 的速度 但還是有機會 cache hit
推 MIKEmike07: wow Cool 蠻厲害的01/03 02:57
推 CodingMan: 推推 01/03 12:33
推 andrenvq57: 川普會寫c @@我跪01/03 18:17
歐巴馬學會之後教我的 >///<
推 Sidney0503: 只能推了01/03 20:08
推 soso7885: 推推 01/03 21:18
推 descent: 感謝說明記憶體使用率01/03 21:28
→ happierway: 推!! 01/04 02:14
推 Sirctal: E3 1230v2再戰10年!!!01/04 23:06
→ DonaldTrunnp: 但是恐怕要再換主板 才能再戰十年 XD 01/04 23:57
推 shadowjohn: 太猛啦! 01/05 10:40
→ HolyBugTw: 要朝聖啊~01/05 10:46
推 petingo: 猛01/07 02:50
推 Samuel: 猛!!01/07 15:01
推 bluesoul: 雙向還是單向? 01/11 16:01
→ DonaldTrunnp: 目前僅僅實作的是雙向異或列表 普通雙向列表努力中 01/11 17:33
→ bluesoul: 這樣一來,比較並不公平 01/12 02:48
→ DonaldTrunnp: 確實是有些不公平 但是異或鍊表有更高的計算複雜度 01/12 09:06
→ DonaldTrunnp: 所以用同樣的方法製作雙向鍊表容器速度理論上會略快 01/12 09:06
→ DonaldTrunnp: 而記憶體使用量會略增些 具體的結果要實作完才知道 01/12 09:06
→ bluesoul: 指標的部分至少就是兩倍用量,另外有比較iterate的速度 01/12 13:05
→ bluesoul: 差嗎? 01/12 13:05
應該是至多兩倍的記憶體用量:(2 * ptr + val) / (1 * ptr + val) < 2
測量的結果如下:
libCCC C++ STL
遍歷 連續 記憶體空間 ~ 0.10 s ~ 0.05 s (幾乎不會有 cache miss)
遍歷 不連續 記憶體空間 ~ 1.51 s ~ 1.49 s (多出來的是 cache miss penalty)
確實需要多一點點的計算才能完成迭代器的遍歷,但是!!!
那個因計算多出來的量 (5e-26 s/elem) 遠遠不及快取未中的的懲罰 (1.5e-24 s/elem)
→ bluesoul: 我的意思是指標的部分是兩倍,因為用了兩個 01/13 02:02
→ bluesoul: 另外xorlinklist 在使用上有很大的限制,如果要比較兩 01/13 02:04
→ bluesoul: 個東西,至少要建立在功能是相同的情況 01/13 02:04
→ bluesoul: 另外請問一下,如何造出連續不連續記憶體的例子? 01/13 02:14
→ DonaldTrunnp: 插入亂數 接著排序 最後再遍歷 就可以了 01/13 02:55
→ DonaldTrunnp: 雙向鏈表的部分 我會再努力生出來的 這要一點時間 01/13 02:57
→ bluesoul: 感謝你的回答,很期待新的版本 01/13 19:48
※ 編輯: DonaldTrunnp (122.116.185.23), 04/05/2017 17:24:31