Measure how much of "wuffs gen" is clang-format
----
$ time wuffs gen
1 milliseconds generating the C code
753 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-base.c
0 milliseconds generating the C code
19 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-adler32.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/adler32.wuffs
1 milliseconds generating the C code
61 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-bmp.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/bmp.wuffs
1 milliseconds generating the C code
78 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-crc32.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/crc32.wuffs
2 milliseconds generating the C code
93 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-deflate.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/deflate.wuffs
0 milliseconds generating the C code
34 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-lzw.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/lzw.wuffs
4 milliseconds generating the C code
203 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-gif.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/gif.wuffs
0 milliseconds generating the C code
33 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-gzip.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/gzip.wuffs
4 milliseconds generating the C code
135 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-json.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/json.wuffs
0 milliseconds generating the C code
44 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-wbmp.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/wbmp.wuffs
0 milliseconds generating the C code
32 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/gen/c/wuffs-std-zlib.c
gen unchanged: /etcetera/wuffs/gen/wuffs/std/zlib.wuffs
3 milliseconds collecting the C code
1173 milliseconds formatting the C code via "clang-format-5.0"
gen unchanged: /etcetera/wuffs/release/c/wuffs-unsupported-snapshot.c
real 0m2.849s
user 0m2.674s
sys 0m0.278s
----
diff --git a/cmd/wuffs-c/release.go b/cmd/wuffs-c/release.go
index 684b166..1b435c6 100644
--- a/cmd/wuffs-c/release.go
+++ b/cmd/wuffs-c/release.go
@@ -24,11 +24,17 @@
"path/filepath"
"sort"
"strings"
+ "time"
cf "github.com/google/wuffs/cmd/commonflags"
)
func doGenrelease(args []string) error {
+ // printTimings set true will print the time taken for the cformatter and
+ // other work.
+ const printTimings = false
+ now := time.Now()
+
flags := flag.FlagSet{}
cformatterFlag := flags.String("cformatter", cf.CformatterDefault, cf.CformatterUsage)
commitDateFlag := flags.String("commitdate", "", "git commit date the release was built from")
@@ -125,11 +131,22 @@
unformatted.WriteString(grPragmaPop)
unformatted.WriteString("\n\n#endif // WUFFS_INCLUDE_GUARD\n\n")
+ if printTimings {
+ fmt.Fprintf(os.Stderr, "%8d milliseconds collecting the C code\n",
+ time.Since(now).Milliseconds())
+ now = time.Now()
+ }
+
cmd := exec.Command(*cformatterFlag, "-style=Chromium")
cmd.Stdin = unformatted
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
- return cmd.Run()
+ err := cmd.Run()
+ if printTimings {
+ fmt.Fprintf(os.Stderr, "%8d milliseconds formatting the C code via %q\n",
+ time.Since(now).Milliseconds(), *cformatterFlag)
+ }
+ return err
}
var (
diff --git a/internal/cgen/cgen.go b/internal/cgen/cgen.go
index d2f867b..f910e97 100644
--- a/internal/cgen/cgen.go
+++ b/internal/cgen/cgen.go
@@ -26,6 +26,7 @@
"os/exec"
"sort"
"strings"
+ "time"
"github.com/google/wuffs/lang/builtin"
"github.com/google/wuffs/lang/generate"
@@ -116,6 +117,11 @@
genlinenumFlag := flags.Bool("genlinenum", cf.GenlinenumDefault, cf.GenlinenumUsage)
return generate.Do(&flags, args, func(pkgName string, tm *t.Map, files []*a.File) ([]byte, error) {
+ // printTimings set true will print the time taken for the cformatter
+ // and other work.
+ const printTimings = false
+ now := time.Now()
+
if !cf.IsAlphaNumericIsh(*cformatterFlag) {
return nil, fmt.Errorf("bad -cformatter flag value %q", *cformatterFlag)
}
@@ -182,6 +188,12 @@
}
}
+ if printTimings {
+ fmt.Fprintf(os.Stderr, "%8d milliseconds generating the C code\n",
+ time.Since(now).Milliseconds())
+ now = time.Now()
+ }
+
stdout := &bytes.Buffer{}
cmd := exec.Command(*cformatterFlag, "-style=Chromium")
cmd.Stdin = bytes.NewReader(unformatted)
@@ -190,6 +202,10 @@
if err := cmd.Run(); err != nil {
return nil, err
}
+ if printTimings {
+ fmt.Fprintf(os.Stderr, "%8d milliseconds formatting the C code via %q\n",
+ time.Since(now).Milliseconds(), *cformatterFlag)
+ }
return stdout.Bytes(), nil
})
}