The test code is below: package main import ( "testing" )
const rowSize = 1000000 const colSize = 100 var array [rowSize][colSize]int func BenchmarkRow(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { sum := 0 for r := 0; r < rowSize; r++ { for c := 0; c < colSize; c++ { sum += array[r][c] } } } } func BenchmarkColumn(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { sum := 0 for c := 0; c < colSize; c++ { for r := 0; r < rowSize; r++ { sum += array[r][c] } } } } As we known, there is a cpu cache in computer, so the row-wise should perform better than the column-wise. But the test result is : go test -bench=. -count=5 goos: darwin goarch: amd64 BenchmarkRow-4 30 42926367 ns/op BenchmarkRow-4 30 50048505 ns/op BenchmarkRow-4 32 38466153 ns/op BenchmarkRow-4 28 40887279 ns/op BenchmarkRow-4 30 36325967 ns/op BenchmarkColumn-4 34 30991838 ns/op BenchmarkColumn-4 36 30965998 ns/op BenchmarkColumn-4 39 31575142 ns/op BenchmarkColumn-4 33 35048352 ns/op BenchmarkColumn-4 38 32584167 ns/op PASS It show that the column-wise traverse is quicker than the row-wise. I test it in my macbook and ubuntu server, the result is the same -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/c3ec301f-931c-49d8-9858-59496417ce8f%40googlegroups.com.