Re: [問題] buf = new buf[4096]

看板C_Sharp (C#)作者 (garmina1985)時間13年前 (2011/10/21 09:31), 編輯推噓3(300)
留言3則, 1人參與, 最新討論串3/3 (看更多)
感謝分享,另外由於是站外轉信,看不到推文,分享一位大大的推文, glennchen:http://ppt.cc/tSjF 內容大概是說壓縮演算法本身的效能跟buf大小沒關,也有稍微提到你說的IO問題~ -- 好久沒去bala站了XD ※ 引述《avi.bbs@bala.mis.ccu.edu.tw (keep healthy body)》之銘言: ※ 引述《garmina1985.bbs@ptt.cc (garmina1985)》之銘言: > (已爬文) > 各位前輩,最近在寫C#的壓縮程式(利用SharpZipLib) > 裡面有一行程式是byte[] buffer = new byte[4096] > 想請問這樣設計是有甚麼目的麻 ? > 為什麼要把buf大小剛好設成4K byte呢 ? > 請前輩指教,感謝。 因為OS中記憶體的分配多數是以4096為一個基本單位,但by OS不同可能會不一樣 但脫不了 1024的倍數,你可以試著建立一個文字檔,什麼內容都不需要有, 就會有4k(XP)了 不過如果要控制的內容確定都會小於4K的話,建議以1024為buffer單位也不錯 如果內容非常大,你可以加大buffer的大小,但建議以4096的倍數為單位 這樣可以加快IO的速度 -- ◣ │ 我說拔辣!!◣╭─────────╮ 香蕉!!\ ◢ˋ ˋ ˊ▊ ●◤◥ ◤│ IP:140.123.174.1▂▃▅▆▇ ◤◥" ˊ " " ▋╯ ▁▃ DN:bala.twbbs.org│ ╰◢" ▂▃▄▅▆▇█ ╰─────────╯《中正資管‧芭樂的故鄉》 FR: 114-32-245-244.HINET-IP.hinet.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.39.131.180

10/27 13:41, , 1F
當然直覺是跟磁區預設size有關,NTFS是4K分區的
10/27 13:41, 1F

10/27 13:41, , 2F
常用網路socket的buffer size,我都會儘量符合系統預設值
10/27 13:41, 2F

10/27 13:42, , 3F
C# Socket的buffer預設是8KB,我就不會死硬要用4KB都看官方
10/27 13:42, 3F
文章代碼(AID): #1EeCjW47 (C_Sharp)
文章代碼(AID): #1EeCjW47 (C_Sharp)