go - 如何定义通道缓冲区的最佳大小?
问题描述
我知道缓冲区的大小可以在应用程序性能中发挥重要作用,但是定义缓冲区大小的最佳方法是什么?调整大小时我应该考虑什么?
诸如“最佳实践”之类的东西</p>
解决方案
为了证明缓冲区大小实际上是影响性能的一个重要因素,您必须测量性能并尝试不同的大小进行比较。那时,您已经有一种方法可以找到一个好的价值(只需继续测试和比较)。
至于在确定频道大小时要考虑什么,这可能是一个不同的问题。首先要考虑的是程序的正确性:意思是程序是否会按预期运行并且没有错误。正如评论中提到的,在绝大多数情况下,“正确”值是 0 或 1,分别在同步和非同步通信中。
如果您的通道确实需要大于 1 的缓冲区大小,那么您必须确定通道必须一次保存的值的上限或“最坏情况”数量以避免死锁。如果你不能确定那个数字到底是多少,这是一个没有上限的好兆头。例如,如果您有一个发送消息的递归例程,则可能没有上限。如果是这种情况,您必须重新设计程序以动态存储值,例如切片。
推荐阅读
- java - 绘制矢量并使用手指以圆周运动移动已绘制的矢量
- python - Python BeautifulSoup 过滤文本
- ruby-on-rails - 为什么捆绑安装命令不起作用?
- mitmproxy - 如何从 mitmweb 下载当前流量?
- python - 使用python将XML字符串从字符串转换为csv时处理逗号(,)
- azure - 在 Azure Key Vault 配置 ASP.NET Core 3.1 之后,在调试中启动我的网站不起作用
- r - 打开 .tiff 给我一个 plot.window() 错误
- go - 在主包外部定义处理程序时 chi.URLParam 不起作用
- go - 在一元流中发送 ListBlog 响应
- c++ - 从双向循环链表中的给定位置删除节点