-4
type path []byte
func (p path) ToUpper() {
for i, b := range p {
if 'a' <= b && b <= 'z' {
p[i] = b + 'A' - 'a'
}
}
}
(本實施例中是由「圍棋博客」複製),如果ToUpper的變化是這樣的:Golang:哪個方向是有關使用更高效「爲範圍」在上述
func (p path) ToUpper() {
for i, _ := range p {
if 'a' <= p[i] && p[i] <= 'z' {
p[i] = p[i] + 'A' - 'a'
}
}
}
這將更高效
爲什麼?
「The Blog Blog」與前者說: 「ToUpper方法在for範圍構造中使用兩個變量來捕獲索引和切片元素,這種形式的循環避免了多次寫入p [i]身體。」
是什麼意思?
但前者也有較少的邊界檢查,並且b可能永遠不會留下一個寄存器。如果沒有基準測試和/或檢查生成的組件,您不能做出任何假設。 – JimB
@JimB:感謝您的參與 - 再次,分裂「假設」的含義成真。既然你很友善,不會投票給我,如果可能的話,我會自己做出悔改的行爲。 –
僅供參考,前者在我的機器上以go1.6顯着更快 – JimB