massive: move a lot of things
This commit is contained in:
71
x-tba/slicing-allocs-gotcha/main.go
Normal file
71
x-tba/slicing-allocs-gotcha/main.go
Normal file
@ -0,0 +1,71 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
// Before running this program:
|
||||
//
|
||||
// RUN: `go run nums/main.go`
|
||||
// It will create a 12 MB long nums.txt file.
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"runtime"
|
||||
|
||||
s "github.com/inancgumus/prettyslice"
|
||||
)
|
||||
|
||||
const (
|
||||
loops = 1000
|
||||
file = "nums.txt"
|
||||
)
|
||||
|
||||
var buf []byte
|
||||
|
||||
func main() {
|
||||
{
|
||||
b, _ := ioutil.ReadFile(file)
|
||||
buf = b[:1]
|
||||
|
||||
s.Show("sliced buf", buf)
|
||||
}
|
||||
report()
|
||||
|
||||
{
|
||||
var nilBuf []byte
|
||||
|
||||
b, _ := ioutil.ReadFile(file)
|
||||
buf = append(nilBuf, b[:1]...)
|
||||
|
||||
s.Show("copied buf", buf)
|
||||
}
|
||||
report()
|
||||
}
|
||||
|
||||
func report() {
|
||||
const KB = 1024
|
||||
|
||||
var m runtime.MemStats
|
||||
r := func() {
|
||||
runtime.ReadMemStats(&m)
|
||||
fmt.Printf("%v KB\n", m.Alloc/KB)
|
||||
}
|
||||
|
||||
fmt.Print(" > Before Garbage Collection: ")
|
||||
r()
|
||||
|
||||
runtime.GC()
|
||||
fmt.Print(" > After Garbage Colletion : ")
|
||||
r()
|
||||
}
|
||||
|
||||
func init() {
|
||||
s.Width = 50
|
||||
s.PrintBacking = true
|
||||
s.MaxElements = 10
|
||||
}
|
32
x-tba/slicing-allocs-gotcha/nums/main.go
Normal file
32
x-tba/slicing-allocs-gotcha/nums/main.go
Normal file
@ -0,0 +1,32 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
const path = "nums.txt"
|
||||
|
||||
_ = os.Remove(path)
|
||||
|
||||
f, _ := os.OpenFile(path,
|
||||
os.O_CREATE|os.O_WRONLY,
|
||||
0644)
|
||||
defer f.Close()
|
||||
|
||||
const size = 1000000
|
||||
w := bufio.NewWriterSize(f, 1<<16)
|
||||
for i := 1; i <= size; i++ {
|
||||
fmt.Fprintf(w, "num: %d\n", i)
|
||||
}
|
||||
w.Flush()
|
||||
}
|
Reference in New Issue
Block a user