为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的切片元素访问复杂度是多少?

Go 中的切片元素访问复杂度是多少?

Go
MM们 2021-07-08 14:11:29
我认为它是 O(1),但这是来自 pprof 输出:140    140  176:    var lastSB byte = s[lenSMinusOne]88     88   177:    var lastSuffixB byte = suffix[lenSuffixMinusOne]并且 s 的平均长度大于后缀的长度。因此,这表明如果切片更大,访问元素需要更长的时间?功能是:func hasSuffix(s, suffix []byte) bool {    lenSMinusOne      := len(s)      - 1    lenSuffixMinusOne := len(suffix) - 1    var lastSB byte = s[lenSMinusOne]    var lastSuffixB byte = suffix[lenSuffixMinusOne]    if lenSMinusOne < lenSuffixMinusOne {        return false    } else if lastSB != lastSuffixB {        return false    } else {        for i := 0; i < lenSuffixMinusOne ; i++ {               if suffix[i] != s[lenSMinusOne-lenSuffixMinusOne+i] {                        return false               }        }    }    return true}更新:为了重现结果,安装fetch使用带有大型语料库的go-porterstemmer fork(我使用 440mb 文件)。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信