func()

in funcbench/bench.go [84:117]


func (b *Benchmarker) exec(pkgRoot string, commit plumbing.Hash) (string, error) {
	fileName, err := b.benchOutFileName(commit)
	if err != nil {
		return "", err
	}

	if _, err := os.ReadFile(filepath.Join(b.resultCacheDir, fileName)); err == nil {
		fmt.Println("Found previous results for ", fileName, b.benchFunc, "Reusing.")
		return filepath.Join(b.resultCacheDir, fileName), nil
	}

	// TODO Switch working directory before entering this function.
	benchCmd := []string{"sh", "-c", strings.Join(append([]string{"cd", pkgRoot, "&&"}, b.benchmarkArgs...), " ")}

	b.logger.Println("Executing benchmark command for", commit.String(), "\n", benchCmd)
	if b.enablePerflock {
		benchCmd = append([]string{"perflock"}, benchCmd...)
	}
	out, err := b.c.exec(benchCmd...)
	if err != nil {
		return "", errors.Wrap(err, "benchmark ended with an error.")
	}

	fn := filepath.Join(b.resultCacheDir, fileName)
	if b.resultCacheDir != "" {
		if err := os.MkdirAll(b.resultCacheDir, os.ModePerm); err != nil {
			return "", err
		}
	}
	if err := os.WriteFile(fn, []byte(out), os.ModePerm); err != nil {
		return "", err
	}
	return fn, nil
}