Исходники и презентации

This commit is contained in:
2025-05-23 07:26:39 +03:00
parent aa948179d5
commit 02d8430a3a
514 changed files with 13773 additions and 0 deletions

View File

@ -0,0 +1,107 @@
package main
import (
"fmt"
"math/rand"
"testing"
)
// go test -bench=. comparison_test.go
type OODStyle struct {
Field1 int
Field2 string
Field3 int
Field4 string
Field5 int
Field6 string
Field7 int
Field8 string
}
type DODStyle struct {
Field1 []int
Field2 []string
Field3 []int
Field4 []string
Field5 []int
Field6 []string
Field7 []int
Field8 []string
}
var Sink int
func BenchmarkDOD(b *testing.B) {
r := rand.New(rand.NewSource(42))
data := generateDOD(r, 1_000_000)
b.ResetTimer()
Sink = 0
for i := 0; i < b.N; i++ {
for j, f1 := range data.Field1 {
if f1 == 500000 {
Sink = j
}
}
}
}
func BenchmarkOOD(b *testing.B) {
r := rand.New(rand.NewSource(42))
data := generateOOD(r, 1_000_000)
b.ResetTimer()
Sink = 0
for i := 0; i < b.N; i++ {
for j, ant := range data {
if ant.Field1 == 500000 {
Sink = j
}
}
}
}
func generateOOD(r *rand.Rand, size int) []OODStyle {
data := make([]OODStyle, size)
for i := range data {
data[i] = OODStyle{
Field1: r.Intn(1000),
Field2: fmt.Sprintf("field2-%d", r.Intn(1000)),
Field3: r.Intn(1000),
Field4: fmt.Sprintf("field4-%d", r.Intn(1000)),
Field5: r.Intn(1000),
Field6: fmt.Sprintf("field6-%d", r.Intn(1000)),
Field7: r.Intn(1000),
Field8: fmt.Sprintf("fiel8-%d", r.Intn(1000)),
}
}
return data
}
func generateDOD(r *rand.Rand, size int) DODStyle {
data := DODStyle{
Field1: make([]int, size),
Field2: make([]string, size),
Field3: make([]int, size),
Field4: make([]string, size),
Field5: make([]int, size),
Field6: make([]string, size),
Field7: make([]int, size),
Field8: make([]string, size),
}
for i := 0; i < size; i++ {
data.Field1[i] = r.Intn(1000)
data.Field2[i] = fmt.Sprintf("field2-%d", r.Intn(1000))
data.Field3[i] = r.Intn(1000)
data.Field4[i] = fmt.Sprintf("field4-%d", r.Intn(1000))
data.Field5[i] = r.Intn(1000)
data.Field6[i] = fmt.Sprintf("field6-%d", r.Intn(1000))
data.Field7[i] = r.Intn(1000)
data.Field8[i] = fmt.Sprintf("fiel8-%d", r.Intn(1000))
}
return data
}