作者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
※ 引述《[email protected] (keep healthy body)》之铭言:
※ 引述《[email protected] (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
1F:推 tomex:当然直觉是跟磁区预设size有关,NTFS是4K分区的 10/27 13:41
2F:推 tomex:常用网路socket的buffer size,我都会尽量符合系统预设值 10/27 13:41
3F:推 tomex:C# Socket的buffer预设是8KB,我就不会死硬要用4KB都看官方 10/27 13:42