老师您好,go版本1.18.2用上老师的时间换空间的代码,反而慢了不止一点半点

来源:9-3 使用pprof进行性能调优

WittChen

2022-06-15

![图片描述
图片描述
也不知道是什么问题,慕课上copy下来的

写回答

2回答

ccmouse

2022-07-06

这是一个很有意思的发现,可以把完整代码看一下,可能是1.18对map做了优化,也可以用pprof工具进一步查看来确认。

不过呢,最终就是像我课上最后说的那样,这里只是演示了工具的用法,本身这个优化对于完整项目很可能微乎其微,所以还是以代码可读性为主。

0
0

WittChen

提问者

2022-06-15

经过反复试验,如下代码,我把返回的值固定写死,保证测试能通过的情况下,使用数组和map做比较,貌似数组取值或者赋值的性能不如map,数组是4位数,map是3位数的性能,虽然是纳秒但是相差还是很大很大

func LengthOfNonRepeatingSubStr3(s string) int {
   var lastOccurred1 [0xffff]int
   //for i := range lastOccurred1 {
   // lastOccurred1[i] = -1
   //}
   start := 0
   maxLength := 8

   for i, ch := range []rune(s) {
      if lastI := lastOccurred1[ch]; lastI != 0 && lastI >= start {
         start = lastI + 1
      }
      if i-start+1 > maxLength {
         maxLength = i - start + 1
      }
      lastOccurred1[ch] = i
   }

   return maxLength
}

//img.mukewang.com/szimg/62a95a1b0961416610630335.jpg

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程