跳转到主要内容

【Go语言测试】使用基准分析 Go 函数的性能

这篇博文是对 justforfunc 第 28 集的补充,您可以在下方观看。

https://youtu.be/2AulMm-hsdI

在上一篇博文中,我讨论了在 Go 中合并 n 个通道的两种不同方式,但我们没有讨论哪种方式更快。与此同时,YouTube 评论中提出了第三种合并频道的方法。

这篇博文将展示第三种方式,并从性能角度比较所有方式,并使用基准进行分析。

第三种渠道合并方式


两集前,我们讨论了如何使用单个 goroutine 和 nil 通道合并两个通道。我们将这里的该函数称为 mergeTwo。一个 justforfunc 查看器提出了一种使用此函数和递归的方法,以提供一种合并 n 个通道的方法。


使用递归合并 N 个通道
解决方案非常聪明。如果我们有:

  • 一个频道,我们返回那个频道。
  • 两个或更多通道,我们合并一半通道,然后使用使用高效函数的结果合并它们。

没有频道怎么办?我们将返回一个已经关闭的通道。

【Go语言测试】高级 Go 测试教程

🚀 我的新课程 - Golang 测试圣经现已推出,涵盖了启动和运行为 Go 应用程序创建测试所需的一切!

欢迎各位码农!在本教程中,我们将看看 Go 核心语言开发人员和流行的生产级工具等使用的更高级的测试实践的选择。

我觉得这种方法,即实际研究在生产系统中所做的事情,有望让您深入了解测试您自己的生产级 Go 程序的最佳方法。

注意 - 如果您对测试基于 Go 的程序完全不熟悉,那么我建议您查看我的另一个教程:go 测试简介

目标


在本教程结束时:

  • 您将对如何测试 Go 系统有更深入的了解
  • 您将知道如何分离您的单元和集成测试。
  • 您将知道如何模拟您的 Go 应用程序可能发出的任何 HTTP 请求。


先决条件


在您阅读本文之前,您将需要以下内容: