我反复测试了,优化后测试结果基本上比优化前还慢?什么原因呢?
来源:9-3 使用pprof进行性能调优

弱弱小乖乖
2018-03-25
基本测试都是优化后比优化前还慢,偶尔优化后会快。为什么呢?
附图
https://chrome.google.com/webstore/
写回答
3回答
-
KimZing
2018-03-26
优化前
优化后
用的是你的同样的代码,性能是有提升的,我的:go version: 1.10 电脑配置:i7 2.2GHZ 内存: 16G,
代码应该是没问题的,希望对你有所帮助。
042018-03-26 -
弱弱小乖乖
提问者
2018-03-26
func BenchmarkSubstr(b *testing.B) { s := "黑化肥挥发发挥灰化肥挥发发黑会飞话" maxLength := 8 for i := 0; i < 11; i++ { s = s + s } //b.Logf("len(s) = %d", len(s)) b.ResetTimer() // b.N = 4000000 for i := 0; i < b.N; i++ { actual := nonRepeatingStr(s) if actual != maxLength { b.Errorf("got %d for input %s; expected %d", actual, s, maxLength) } } }
package main import ( "fmt" ) var lastOccurred = make([]int, 0xffff) // 空间换时间 65535; lastOccurred[0x65] func nonRepeatingStr(s string) int { // 每个字母最后出现的位置 //lastOccurred := make(map[rune]int) for i := range lastOccurred { lastOccurred[i] = -1 } // 子字符串开始的位置 start := 0 // 子字符串的长度 maxLength := 0 for i, ch := range []rune(s) { // 当前字符,从开始位置,如果出现过;开始位置从当前字符出现过的位置+1 //if lastI, ok := lastOccurred[ch]; ok && lastI >= start { if lastI := lastOccurred[ch]; lastI != -1 && lastI >= start { start = lastOccurred[ch] + 1 } if i-start+1 > maxLength { maxLength = i - start + 1 } lastOccurred[ch] = i } return maxLength }
00 -
KimZing
2018-03-26
你只贴了这个图,老师应该也没有办法回答你。作为程序员,还是学学如何提问的艺术吧042018-03-26
相似问题