show individual time
This commit is contained in:
parent
2027f3412c
commit
8616fe67dc
12
compile.go
12
compile.go
@ -5,9 +5,13 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Compile(cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
start := time.Now()
|
||||
|
||||
// calculate filepath
|
||||
b := new(strings.Builder)
|
||||
data := &OutputFileTmplData{
|
||||
Name: ProjectName,
|
||||
@ -20,7 +24,6 @@ func Compile(cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
wg.Done()
|
||||
return
|
||||
}
|
||||
|
||||
filePath := filepath.Join(*OutputDir, b.String())
|
||||
|
||||
filePath, err := filepath.Abs(filePath)
|
||||
@ -45,7 +48,8 @@ func Compile(cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
wg.Done()
|
||||
return
|
||||
}
|
||||
Compress(filePath, cfg, ch, wg)
|
||||
|
||||
Compress(filePath, start, cfg, ch, wg)
|
||||
|
||||
// uncomment for independent compile and compress tasks
|
||||
// (slightly slower in tests, most likely because of more context switches)
|
||||
@ -55,7 +59,7 @@ func Compile(cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
*/
|
||||
}
|
||||
|
||||
func Compress(filePath string, cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
func Compress(filePath string, start time.Time, cfg *CompileConfig, ch chan<- *CompileReport, wg *sync.WaitGroup) {
|
||||
defer wg.Done()
|
||||
|
||||
ch <- &CompileReport{Config: cfg, State: StateCompressing}
|
||||
@ -75,5 +79,5 @@ func Compress(filePath string, cfg *CompileConfig, ch chan<- *CompileReport, wg
|
||||
}
|
||||
}
|
||||
|
||||
ch <- &CompileReport{Config: cfg, State: StateDone}
|
||||
ch <- &CompileReport{Config: cfg, State: StateDone, Duration: time.Since(start)}
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
type CompileReport struct {
|
||||
Config *CompileConfig
|
||||
State CompileState
|
||||
Duration time.Duration
|
||||
}
|
||||
|
||||
type CompileState string
|
||||
|
2
main.go
2
main.go
@ -82,7 +82,7 @@ func main() {
|
||||
<-doneCh // wait for Watch routine
|
||||
|
||||
if !*Silent {
|
||||
fmt.Printf("compilation took %s (using %s threads)\n", end.Sub(start), GetThreadCountString())
|
||||
fmt.Printf("compilation took %s (using %s threads)\n", end.Sub(start).Truncate(time.Second/100), GetThreadCountString())
|
||||
}
|
||||
}
|
||||
|
||||
|
16
watch.go
16
watch.go
@ -1,10 +1,15 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Watch(ch <-chan *CompileReport, doneCh chan<- struct{}) {
|
||||
defer close(doneCh)
|
||||
|
||||
times := map[*CompileConfig]time.Duration{}
|
||||
|
||||
states := map[*CompileConfig]CompileState{}
|
||||
for _, cfg := range CompileConfigs {
|
||||
states[cfg] = StateWaiting
|
||||
@ -14,8 +19,9 @@ func Watch(ch <-chan *CompileReport, doneCh chan<- struct{}) {
|
||||
|
||||
for report := range ch {
|
||||
states[report.Config] = report.State
|
||||
times[report.Config] = report.Duration.Truncate(time.Second / 100)
|
||||
if !*Silent {
|
||||
PrintStates(states, cleared)
|
||||
PrintStates(states, times, cleared)
|
||||
}
|
||||
cleared = true
|
||||
}
|
||||
@ -23,7 +29,7 @@ func Watch(ch <-chan *CompileReport, doneCh chan<- struct{}) {
|
||||
doneCh <- struct{}{}
|
||||
}
|
||||
|
||||
func PrintStates(states map[*CompileConfig]CompileState, clear bool) {
|
||||
func PrintStates(states map[*CompileConfig]CompileState, times map[*CompileConfig]time.Duration, clear bool) {
|
||||
if clear {
|
||||
for i := 0; i < len(CompileConfigs); i++ {
|
||||
goUp()
|
||||
@ -38,6 +44,10 @@ func PrintStates(states map[*CompileConfig]CompileState, clear bool) {
|
||||
continue
|
||||
}
|
||||
|
||||
if state == StateDone {
|
||||
fmt.Printf(fmt.Sprintf("%%-%ds %%s (%%s)\n", MaxConfigStringLength), cfg.String(), state, times[cfg])
|
||||
} else {
|
||||
fmt.Printf(fmt.Sprintf("%%-%ds %%s\n", MaxConfigStringLength), cfg.String(), state)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user