func BenchmarkHQ9_Hello(b *testing.B) { hq9, err := ioutil.ReadFile("hello.hq9") if err != nil { panic(err) } var buf bytes.Buffer w := NewWriter(&buf) _, err = w.Program(string(hq9)) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } b.ResetTimer() prog, err := bit.Parse(&buf) if err != nil { panic(err) } b.ResetTimer() for i := 0; i < b.N; i++ { err := prog.Run(bitio.Null, bitio.Null) if err != nil { panic(err) } } }
func parse() bit.Program { f, err := os.Open(flag.Arg(0)) if err != nil { handle(err) panic("unreachable") } defer func() { if err := f.Close(); err != nil { handle(err) panic("unreachable") } }() prog, err := bit.Parse(f) if err != nil { handle(err) panic("unreachable") } if !*flagNoOpt { prog.Optimize() } return prog }
func BenchmarkHQ9_Parse(b *testing.B) { hq9, err := ioutil.ReadFile("hello.hq9") if err != nil { panic(err) } var buf bytes.Buffer w := NewWriter(&buf) _, err = w.Program(string(hq9)) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } b.ResetTimer() for i := 0; i < b.N; i++ { prog, err := bit.Parse(bytes.NewReader(buf.Bytes())) if err != nil { panic(err) } _ = prog } }
func BenchmarkBF_Optimize(b *testing.B) { bf, err := ioutil.ReadFile("hello.bf") if err != nil { panic(err) } commands, err := Parse(Tokenize(bytes.NewReader(bf))) if err != nil { panic(err) } var buf bytes.Buffer w := NewWriter(&buf) _, err = w.Program(commands) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } prog, err := bit.Parse(&buf) if err != nil { panic(err) } b.ResetTimer() for i := 0; i < b.N; i++ { prog.Optimize() } }
func parse() (prog0, prog1 bit.Program) { ch := make(chan bit.Program) for i := 0; i < 2; i++ { go func() { f, err := os.Open(flag.Arg(0)) if err != nil { handle(err) panic("unreachable") } prog, err := bit.Parse(f) if err != nil { handle(err) panic("unreachable") } if err = f.Close(); err != nil { handle(err) panic("unreachable") } ch <- prog }() } prog0, prog1 = <-ch, <-ch prog1.Optimize() return }
func Example() { f, err := os.Open("hello.ook") if err != nil { panic(err) } commands, err := Parse(bufio.NewReader(f)) if err != nil { panic(err) } err = f.Close() if err != nil { panic(err) } var buf bytes.Buffer w := bf.NewWriter(&buf) _, err = w.Program(commands) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } prog, err := bit.Parse(&buf) if err != nil { panic(err) } bw := bufio.NewWriter(os.Stdout) err = prog.RunByte(bufio.NewReader(os.Stdin), bw) if err != nil { panic(err) } err = bw.Flush() if err != nil { panic(err) } // Output: // Hello World! }
func Example() { b, err := ioutil.ReadFile("hello.hq9") if err != nil { panic(err) } var buf bytes.Buffer w := NewWriter(&buf) _, err = w.Program(string(b)) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } prog, err := bit.Parse(&buf) if err != nil { panic(err) } bw := bufio.NewWriter(os.Stdout) err = prog.RunByte(bufio.NewReader(os.Stdin), bw) if err != nil { panic(err) } err = bw.Flush() if err != nil { panic(err) } // Output: // Hello, World! }