diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-11-02 05:17:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-11-02 05:17:33 +0900 |
| commit | e7161f8e615dabdb14831fc0dd86cd2d33736a86 (patch) | |
| tree | 9e76a277520beab7c8d08a9de9d82ed66ce0a2ab | |
| parent | 6931ad95c3e7d0acb45b2aafe24fb63012f061a5 (diff) | |
internal/outcome: measure finalise time
This also increases precision of state time output.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | internal/outcome/dispatcher_test.go | 1 | ||||
| -rw-r--r-- | internal/outcome/main.go | 4 | ||||
| -rw-r--r-- | internal/outcome/process.go | 7 |
3 files changed, 8 insertions, 4 deletions
diff --git a/internal/outcome/dispatcher_test.go b/internal/outcome/dispatcher_test.go index 0d0568e4..87a24e6c 100644 --- a/internal/outcome/dispatcher_test.go +++ b/internal/outcome/dispatcher_test.go @@ -690,6 +690,7 @@ func (panicMsgContext) Value(any) any { panic("unreachable") } type panicDispatcher struct{} func (panicDispatcher) new(func(k syscallDispatcher, msg message.Msg)) { panic("unreachable") } +func (panicDispatcher) getppid() int { panic("unreachable") } func (panicDispatcher) getpid() int { panic("unreachable") } func (panicDispatcher) getuid() int { panic("unreachable") } func (panicDispatcher) getgid() int { panic("unreachable") } diff --git a/internal/outcome/main.go b/internal/outcome/main.go index 48762c13..feffb661 100644 --- a/internal/outcome/main.go +++ b/internal/outcome/main.go @@ -3,6 +3,7 @@ package outcome import ( "context" "log" + "time" "hakurei.app/hst" "hakurei.app/message" @@ -16,10 +17,13 @@ func Main(ctx context.Context, msg message.Msg, config *hst.Config) { } seal := outcome{syscallDispatcher: direct{msg}} + + finaliseTime := time.Now() if err := seal.finalise(ctx, msg, &id, config); err != nil { printMessageError(msg.GetLogger().Fatalln, "cannot seal app:", err) panic("unreachable") } + msg.Verbosef("finalise took %.2f ms", float64(time.Since(finaliseTime).Nanoseconds())/1e6) seal.main(msg) panic("unreachable") diff --git a/internal/outcome/process.go b/internal/outcome/process.go index 399e7cb1..c27ec067 100644 --- a/internal/outcome/process.go +++ b/internal/outcome/process.go @@ -110,14 +110,13 @@ func (k *outcome) main(msg message.Msg) { ) for { - var processTimePrev time.Time - processTimePrev, processTime = processTime, time.Now() var processStatePrev uintptr processStatePrev, processStateCur = processStateCur, processState - if !processTimePrev.IsZero() && processStatePrev != processLifecycle { - msg.Verbosef("state %d took %d ms", processStatePrev, processTime.Sub(processTimePrev).Milliseconds()) + if !processTime.IsZero() && processStatePrev != processLifecycle { + msg.Verbosef("state %d took %.2f ms", processStatePrev, float64(time.Since(processTime).Nanoseconds())/1e6) } + processTime = time.Now() switch processState { case processStart: |
