Hlavní navigace

Názor k článku Vývoj síťových aplikací v programovacím jazyku Go (pokračování) od Pavel Tišnovský - Při zápisu do souborů (s flushem) to vychází...

  • Článek je starý, nové názory již nelze přidávat.
  • 19. 2. 2019 17:32

    Pavel Tišnovský

    Při zápisu do souborů (s flushem) to vychází prakticky stejně. Připadá mi, že io.WriteString je nekdy nepatrně pomalejší, ale to je problém microbenchmarků - nedávají moc konzistentní data.

    Benchmarky:

    package main
    
    import (
            "bufio"
            "bytes"
            //"io"
            "os"
            "time"
    )
    
    func main() {
            length := 100000000
            var buffer bytes.Buffer
    
            for i := 0; i < length; i++ {
                    buffer.WriteString("abc\n")
            }
    
            data := buffer.String()
    
            f, _ := os.Create("/tmp/d1")
            defer f.Close()
    
            t1 := time.Now()
            writer := bufio.NewWriter(f)
            writer.Write([]byte(data))
            writer.Flush()
    
            elapsed := time.Since(t1)
            println(elapsed)
    }
    package main
    
    import (
            "bufio"
            "bytes"
            "io"
            "os"
            "time"
    )
    
    func main() {
            length := 100000000
            var buffer bytes.Buffer
    
            for i := 0; i < length; i++ {
                    buffer.WriteString("abc\n")
            }
    
            data := buffer.String()
    
            f, _ := os.Create("/tmp/d2")
            defer f.Close()
    
            t1 := time.Now()
            writer := bufio.NewWriter(f)
            io.WriteString(writer, data)
            writer.Flush()
    
            elapsed := time.Since(t1)
            println(elapsed)
    }