diff --git a/internal/converter/converter.go b/internal/converter/converter.go index 261a7b8..551631c 100644 --- a/internal/converter/converter.go +++ b/internal/converter/converter.go @@ -16,6 +16,7 @@ import ( "reflect" "runtime" "strings" + "time" "github.com/celogeek/go-comic-converter/v2/internal/converter/options" ) @@ -26,6 +27,7 @@ type Converter struct { order []converterOrder isZeroValueErrs []error + startAt time.Time } // Create a new parser @@ -36,6 +38,7 @@ func New() *Converter { Options: options, Cmd: cmd, order: make([]converterOrder, 0), + startAt: time.Now(), } var cmdOutput strings.Builder @@ -299,3 +302,15 @@ func (c *Converter) Fatal(err error) { fmt.Fprintf(os.Stderr, "\nError: %s\n", err) os.Exit(1) } + +func (c *Converter) Stats() { + // Display elapse time and memory usage + var mem runtime.MemStats + runtime.ReadMemStats(&mem) + fmt.Fprintf( + os.Stderr, + "Completed in %s, Memory usage %d Mb\n", + time.Since(c.startAt).Round(time.Millisecond), + mem.Sys/1024/1024, + ) +} diff --git a/main.go b/main.go index a840384..a4a1fe0 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ import ( func main() { cmd := converter.New() + defer cmd.Stats() if err := cmd.LoadConfig(); err != nil { cmd.Fatal(err) } @@ -139,5 +140,4 @@ $ go install github.com/celogeek/go-comic-converter/v%d@%s os.Exit(1) } - os.Exit(0) }