本文以leetcode的一题为例来讲解如何通过PProf来优化我们的程序,题目如下:Longest Substring Without Repeating Characters

首先给出我们一般的解法

性能检测可知 200次, 花费时间 6970790 ns/op


PProf分析

通过访问 http://localhost:8080/ui/ 可以查看到如下页面



[]rune(s)lastOccurred

优化分析

由于map需要进行算hash 判重,分配空间等操作会导致操作慢下来,解决思路就是用空间换时间,通过slice来替换map.

修改后的代码如下:

性能检测可知 500, 花费时间 2578859 ns/op。 相比之前的6970790 ns/op 已经又很大的优化了



后续优化

通过pprof查看除了decoderune外还有一部分时间花费在makeslice上面,这是由于每次调用函数都要makeslicke,可以slice移到函数外面进行声明。具体可以自己操作下,然后查看下pprof图上面的makeslice是否有消除。



本文亦在微信公众号【小道资讯】发布,欢迎扫码关注!