gpt4 book ai didi

c# - 为什么使用 1024 作为缓冲区?

转载 作者:行者123 更新时间:2023-12-02 03:10:22 24 4
gpt4 key购买 nike

我正在查看另一位开发人员编写的一些源代码,当涉及流(文件、内存等)和文件/内容上传时,我遇到了以下代码行。此人使用 1024 作为缓冲区是否有特殊原因?为什么这个 1024 乘以 16?

byte[] buffer = new byte[16*1024];

有人可以进一步澄清这一点吗?另外,如果有人可以指导我阅读文章等以进一步阅读和理解这一点,那就太棒了。

最佳答案

以 2 的幂分配内存的做法是从前的遗留下来的。字大小是 2 的幂(例如,全字 = 32 位,双字 = 8 位),虚拟内存页面大小是 2 的幂。您希望分配的内存在方便的边界上对齐,因为这样可以提高执行效率。例如,曾几何时,如果不在适当的边界上(例如,内存地址分别可被 4 或 8 整除),则将一个字或双字加载到寄存器中在 CPU 周期方面会更加昂贵。如果您分配了一大块内存,您可能还会消耗一整页的虚拟内存,因为无论如何您都可能会锁定整个页面。

现在这并不重要,但旧的做法很难改掉。

[除非您了解内存分配器如何工作以及每个 malloc() block 中涉及多少字的开销...无论如何它可能都不起作用。

关于c# - 为什么使用 1024 作为缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57763223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com