criterion-polyglot 0.1.0

An extension trait for criterion providing benchmark methods for various non-Rust programming languages
Documentation
package main

import (
    harness_bufio "bufio"
    harness_flag "flag"
    harness_fmt "fmt"
    harness_os "os"
    harness_strconv "strconv"
    harness_testing "testing"
)

@"imports"@

@"declarations"@

func main() {
    harness_testing.Init()
    harness_flag.Parse()

    @"global"@

    bench := func(b *harness_testing.B) {

        @"sample"@

        b.ResetTimer()
        for i := 0; i < b.N; i++ {

            @"timed"@

        }
    }

    stdin := harness_bufio.NewScanner(harness_os.Stdin)
    for stdin.Scan() {
        n, err := harness_strconv.ParseUint(stdin.Text(), 10, 64)
        if err != nil {
            harness_fmt.Fprintln(harness_os.Stderr, "parsing integer input:", err)
            harness_os.Exit(1)
        }
        if n == 0 {
            harness_fmt.Println("0 nsec")
            harness_os.Exit(0)
        }
        benchtime_arg := harness_fmt.Sprintf("%dx", n)
        harness_flag.Set("test.benchtime", benchtime_arg)

        result := harness_testing.Benchmark(bench)
        harness_fmt.Printf("%d nsec for %d iterations\n", result.T.Nanoseconds(), result.N)
    }
    if err := stdin.Err(); err != nil {
        harness_fmt.Fprintln(harness_os.Stderr, "reading standard input:", err)
    }
}