作者garmina1985 (garmina1985)
看板C_Sharp
標題Re: [問題] buf = new buf[4096]
時間Fri Oct 21 09:31:10 2011
感謝分享,另外由於是站外轉信,看不到推文,分享一位大大的推文,
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
推 tomex:當然直覺是跟磁區預設size有關,NTFS是4K分區的 10/27 13:41
推 tomex:常用網路socket的buffer size,我都會儘量符合系統預設值 10/27 13:41
推 tomex:C# Socket的buffer預設是8KB,我就不會死硬要用4KB都看官方 10/27 13:42