Fun*_*ung 10 .net buffer httpwebresponse
与来自HttpWebResponse.GetResponseStream()的流一起使用的最佳缓冲区大小是多少?
在线示例从256b到5Kb不等.是什么赋予了?我想缓冲区大小可能是情境化的.如果是这样,使用什么类型的缓冲区大小的情况是什么?
谢谢.
真的,它并不重要.
当然,如果你使用非常小的缓冲区,你可能不得不通过层进行一些额外的调用来获取字节(尽管流可能至少做了一些缓冲 - 我不知道它的默认值是什么).当然,如果你使用非常大的缓冲区,你会浪费一些内存并引入一些碎片.由于你显然在这里做IO,所以通过调整缓冲区获得的任何时候都将由IO时间占主导地位.
作为一般规则,我在2048(2k)和8192(8k)之间使用2的幂.如果你使用等于或大于85,000字节的缓冲区(它是一个"大对象"并受制于不同的GC规则),请确保你知道自己在做什么.
事实上,比缓冲区大小更重要的是你拥有它多长时间.对于大对象堆之外的对象,GC非常擅长处理非常短暂的对象(Gen 0集合很快)或非常长寿的对象(Gen 2).在被释放之前长到足以进入第1代或第2代的物体相对来说成本相对较高,而且通常比缓冲区的大小值得花时间担心.
最后一点:如果您认为由于您使用的缓冲区大小而导致性能问题,请对其进行测试.这不太可能,但是谁知道,也许你有一个奇怪的操作系统版本,网络硬件和驱动程序版本的汇合,这对某些大小的缓冲区有一些奇怪的问题.
| 归档时间: |
|
| 查看次数: |
6850 次 |
| 最近记录: |