鍍金池/ 問答/Java  C  C++  Linux/ 處理IO時,如何定義緩沖區(qū)大???

處理IO時,如何定義緩沖區(qū)大?。?/h1>
public static int KB = 1024;
public static int MB = 1024 * KB;

private static final int CAPACITY_SMALL  =   4  * KB;
private static final int CAPACITY_MEDIUM = 128  * KB;
private static final int CAPACITY_LARGE  = 1024 * KB;

//package scope (default) - so they can be accessed from unit tests.
byte[]  smallMessageBuffer  = new byte[1024 *   4 * KB];   //1024 x   4KB messages =  4MB.
byte[]  mediumMessageBuffer = new byte[128  * 128 * KB];   // 128 x 128KB messages = 16MB.
byte[]  largeMessageBuffer  = new byte[16   *   1 * MB];   //  16 *   1MB messages = 16MB.

經(jīng)??匆娋彺娴拇笮《际且晕坏拇笮《x,是因為習(xí)慣,還是因為什么原因?在實際項目中是否有什么策略根據(jù)自己需求來定義最優(yōu)的值來處理IO?

回答
編輯回答
久舊酒

第一個問題:你給出的代碼都是以字節(jié)而不是位來定義緩存大小的;
第二個問題:通常操作系統(tǒng)都提供了帶緩存的IO操作(IO流接口),如果在實際使用中通過測試發(fā)現(xiàn)瓶頸在IO,再考慮實現(xiàn)自己的IO緩存,

2018年8月19日 10:54
編輯回答
神曲

緩存大小什么單位純粹是個人喜好,最后都是化為以字節(jié)為單位。緩存越大,傳輸大數(shù)據(jù)量效率會更高,因為循環(huán)次數(shù)減少了;相應(yīng)的如果每次實際傳輸?shù)臄?shù)據(jù)量大大小于緩存大小,比如只用到緩存大小的 1/10,那就有點浪費內(nèi)存了,當(dāng)然內(nèi)存不敏感(比如多用個 1~2 MB 完全可以接受)的情況下無所謂。

2018年1月13日 16:34