註冊 登入



打印

[程式編寫] Create cross platform framework in Xcode

[隱藏]
引用:
原帖由 sswroom 於 2017-8-20 11:19 AM 發表

malloc 最大問題是分不出是否經Wrapper Allocate, 去到Check Memory Leaks時, 會找到很多不經Wrapper Allocate的Memory Block, 但程式沒有辦法去分是否經Wrapper Allocate, 因此產生很多問題
最老土既做法就係 allocate 時, 拎大 D 放 tracking information,
而且用 linked list 去 link 晒所有經 wrapper 既 allocation record
所以唔會撈埋其他唔用 wrapper 既 allocation

好多人都係咁做, 都 OK 夠用, overhead 唔太大,
我仲係頭尾加 magic number 去 check overrun
缺點就係用多左 memory

http://www.almostinfinite.com/memtrack.html



實用相關搜尋: 程式 IT
引用:
原帖由 sswroom 於 2017-8-20 11:54 AM 發表


CentOS-7-x86_64-Everything-1611.iso的情況, 看到的是MD5的Optimization程度可以差很遠 11.x秒 vs 17.x秒

而test.mkv (20947941158 Bytes) (Uncached)的情況, 可以見到用ReadFile方法計MD5, 速度與File Mappin ...
MD5 有同無 optimize 係可以差好遠, 所以要公平就要用同一個 MD5 function 去比較
個 StopWatch 用 GetTickCount64, 一定唔係好準
但係 I/O 本身都受好多野影響, 我每次 run 個時間差別都好大 (> 10%)

但講到尾都係唔明點解要用 un-cached I/O, 因為仲慢左, 定係我做錯左

如果比較 ReadFile() 同 FileMapping 速度
Single thread FileMapping 會快D,
因為係從 Disk cache 直接 copy 去 map 左既 memory, 少 D overhead

Multi-thread 時,
File Mapping 反而要從 Disk cache ->mapping memory 再要 copy 去 另一個 buffer 俾另一條 thread 用,
結果唔夠 ReadFile() 由 Disk cache -> buffer 快, 雖然 ReadFile() 有多D overhead, 但係都唔夠 copy 多次花時間

所以好睇個 use case, 如果唔係 single file, 而係要計好多個 files 既 md5
咁每條 thread process 一個 file, 用 file mapping 應該比較快






引用:
原帖由 jasonchan35 於 2017-8-20 12:24 PM 發表



MD5 有同無 optimize 係可以差好遠, 所以要公平就要用同一個 MD5 function 去比較
個 StopWatch 用 GetTickCount64, 一定唔係好準
但係 I/O 本身都受好多野影響, 我每次 run 個時間差別都好大 (> 10%)

但講 ...
不是Uncached IO, 只是File Size大過RAM Size, 令File Content不留在Cache內

Multi File也應該是One by One快過同步計, 因為One by One可以減少Seeking浪費時間。
我是用QueryPerformanceCounter來計時的, 會比較準....

你的ReadFile Implementatinon試不到, 因為出了Exception






回覆 引用 TOP

引用:
原帖由 jasonchan35 於 2017-8-20 12:09 PM 發表



最老土既做法就係 allocate 時, 拎大 D 放 tracking information,
而且用 linked list 去 link 晒所有經 wrapper 既 allocation record
所以唔會撈埋其他唔用 wrapper 既 allocation

好多人都係咁做, 都 O ...
用Linked-list的方法會比Windows的HeapAlloc Overhead大.....如果在Linux上找不到更好的方法便只能用這方法, 而且這方法似乎比較難做到Cross Process Memory Tracing.......






[隱藏]
引用:
原帖由 sswroom 於 2017-8-20 12:44 PM 發表

用Linked-list的方法會比Windows的HeapAlloc Overhead大.....如果在Linux上找不到更好的方法便只能用這方法, 而且這方法似乎比較難做到Cross Process Memory Tracing.......
http://man7.org/linux/man-pages/man3/mtrace.3.html



實用相關搜尋: windows Linux Linux

回覆 引用 TOP

引用:
原帖由 sswroom 於 2017-8-20 01:05 AM 發表

以jason那個LargeFileMD5.exe為例, 這個程式用了VCRUNTIME140.dll內的memcpy這Function, 還有_purecall這個Function, 如果要避開VC Redist, 即是不能用memcpy和不能用任何virtual function?
例如呢個PROGRAM我有用到MFC寫 (STATIC LINK), VS 2017
同埋有用到MEMCMP + FTIME.
DYNAMIC LINK ZLIB.DLL + LIBXLSXWRITER.DLL

可以在WINXP RUN到,
SETTING AND DEPENDS如下:





[ 本帖最後由 DSSCSS 於 2017-8-20 05:11 PM 編輯 ]






回覆 引用 TOP

https://github.com/milostosic/MTuner





回覆 引用 TOP

 提示:支持鍵盤翻頁 ←左 右→
[按此隱藏 Google 建議的相符內容]





重要聲明:本討論區是以即時上載留言的方式運作,香港討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意 見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們。香港討論區有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ), 同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權 。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。


Copyright©2003- Discuss.com.hk Limited. All Right Reserved.
版權所有,不得轉載。