더 빠른 것을 찾고 싶었습니다 : struct vs array. 그래서 구조체의 멤버에게 4 개의 int 값 (1,2,3, 4)을 쓰고 길이 4의 배열로 쓰는 GO 코드를 작성했습니다. 작성하는 데 걸리는 시간을 찾으려고 노력했습니다.코드와 성능의 순서
사례 1 : 먼저 구조에 값을 쓰고 배열에 값을 씁니다. 여기서 배열은 구조보다 빠르다는 것을 알았습니다.
package main
import (
"fmt"
"time"
)
type abc struct {
a, b, c, d int
}
func main() {
var obj abc
t1 := time.Now()
obj.a = 1
obj.b = 2
obj.c = 3
obj.d = 4
t2 := time.Since(t1)
fmt.Println("Struct access time: : ", t2)
a := make([]int, 4)
t3 := time.Now()
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
t4 := time.Since(t3)
fmt.Println("Array access time: : ", t4)
}
사례 2 : 두 번째로 배열에 값을 쓰고 구조체에 값을 씁니다. 여기 구조가 배열보다 빠르다는 것이 발견되었습니다.
package main
import (
"fmt"
"time"
)
type abc struct {
a, b, c, d int
}
func main() {
var obj abc
a := make([]int, 4)
t3 := time.Now()
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
t4 := time.Since(t3)
fmt.Println("Array access time: : ", t4)
t1 := time.Now()
obj.a = 1
obj.b = 2
obj.c = 3
obj.d = 4
t2 := time.Since(t1)
fmt.Println("Struct access time: : ", t2)
}
성능이 내가 처음 작성한 것에 따라 달라지는 이유는 무엇입니까? 내가 처음에 쓰는 것은 느린 것 같습니다. 왜 그래야만하지?
벤치 테스트에서'struct'는'slice'보다 빠릅니다. 결론적으로, 당신은 그 반대를 썼습니다. – Motakjuq
@ 모 타크 주크 그래, 그것은 오타 였고, 이미 고쳤다. – icza
@icza 나는 당신이 말한 것을 이해합니다. 나는 두 코드가 동일하게 동작 할 것을 기대했다. 모든 명령어 (배열과 구조체 모두)가 STR