Go中过滤范型集合性能怎么实现


本文小编为大家详细介绍“Go中过滤范型集合性能怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go中过滤范型集合性能怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。最近,我有机会在一个真实的 Golang 场景中使用泛型,同时寻找与 Stream filter(Predicate super T> predicate)和 Python list comprehension 等同的函数。我没有依赖现有的包,而是选择自己写一个过滤函数,以达到学习的目的。然而,这只适用于字符串。如果我需要过滤一个整数的集合,那么我就需要另一个极其相似的函数。这对于一个范型函数来说似乎是一个完美的选择。函数名后面是一个范型T的定义。T被定义为任何类型。输入 slice 中元素的类型从字符串变成了T输入、输出的 clice 类型也从字符串变成了T不多说了,让我们来写一些单元测试。首先,我需要一个随机集合(在我的例子中,是字符串)的生成器。现在我可以写一个测试用例,判断 filterStrings 函数的输出与我的过滤范型器的输出相同。考虑新函数在处理大的 slice 时的性能问题。我怎样才能确保它在这种情况下也能表现良好?答案是:基准测试。用Go编写基准测试与单元测试很相似。我对这个结果并不满意。看起来我用可读性换取了性能。此外,我对分配的数量也有点担心。你注意到我的测试名称中的_Copying后缀了吗?那是因为我的两个过滤函数都是将过滤后的项目从输入集合复制到输出集合中。为什么我必须为这样一个简单的任务占用内存?到最后,我需要做的是过滤原始的收集。我决定先解决这个问题。我不是把过滤后的结果写到一个新的集合中,然后再返回,而是把结果写回原来的集合中,并保留一个额外的索引,以便在过滤后的项目数上 “切 “出一个片断。我的单元测试仍然通过,在改变了下面这行之后。结果是出色的。不仅内存分配归零,而且性能也明显提高。读到这里,这篇“Go中过滤范型集合性能怎么实现”免费云主机域名文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: Spring导出可以运行的jar包问题如何解决

这篇文章主要介绍“Spring导出可以运行的jar包问题如何解决”,在日常操作中,相信很多人在Spring导出可以运行的jar包问题如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring导出可以运行的jar包问题如何…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/19 22:32
下一篇 05/19 22:32

相关推荐