在我的小型文件传输网站(这个,运行 .NET 4.5.1)中,我按照 Microsoft 知识库文章812406将先前上传的文件从服务器发送到浏览器。
做性能优化我惊讶地发现那行
var buffer = new byte[10000];
需要相当多的时间(我正在使用 Red Gate 的ANTS Performance Profiler)。每个完整下载/客户端仅分配一次缓冲区。
我的问题:
- 以这种方式和这种大小分配缓冲区是一种好习惯吗?
- 分配≈10k缓冲区的任何替代方案?
更新1:
感谢您的评论,我看到内存也在循环内分配。
尽管如此,ANTS Profiler 仅在循环之外标记该分配以花费这么多时间,老实说,我(还)不明白。我已经删除了循环内的(无意义的)分配。
更新 2:
实施了建议BufferManager
并将缓冲区大小从 10k 减少到 4096(以防万一......),我的网站从几天以来运行非常流畅。