1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-04 12:52:28 +08:00

feat: add watcher for record code excution time

This commit is contained in:
dudaodong
2022-01-01 19:56:15 +08:00
parent ed4acc1c67
commit d4f49af2ad
3 changed files with 63 additions and 0 deletions

30
function/watcher.go Normal file
View File

@@ -0,0 +1,30 @@
package function
import "time"
// Watcher is used for record code excution time
type Watcher struct {
startTime int64
stopTime int64
excuting bool
}
// Start the watch timer.
func (w *Watcher) Start() {
w.startTime = time.Now().UnixNano()
w.excuting = true
}
// Stop the watch timer.
func (w *Watcher) Stop() {
w.stopTime = time.Now().UnixNano()
w.excuting = false
}
// GetElapsedTime get excute elapsed time.
func (w *Watcher) GetElapsedTime() time.Duration {
if w.excuting {
return time.Duration(time.Now().UnixNano() - w.startTime)
} else {
return time.Duration(w.stopTime - w.startTime)
}
}

32
function/watcher_test.go Normal file
View File

@@ -0,0 +1,32 @@
package function
import (
"testing"
)
func TestWatcher(t *testing.T) {
w := &Watcher{}
w.Start()
longRunningTask()
if !w.excuting {
t.FailNow()
}
w.Stop()
eapsedTime := w.GetElapsedTime().Milliseconds()
t.Log("Elapsed Time (milsecond)", eapsedTime)
if w.excuting {
t.FailNow()
}
}
func longRunningTask() {
var slice []int64
for i := 0; i < 10000000; i++ {
slice = append(slice, int64(i))
}
}