stopw

A stopwatch library in Go for nested time measurement.

Usage

package main

import (
	"encoding/json"
	"fmt"

	"github.com/k1LoW/stopw"
)

func Example() {
	stopw.Start()
	stopw.Start("sub span A")
	// do something for `sub span A`
	stopw.Start("sub span B")
	// do something for `sub span B`
	stopw.Start("sub span A", "sub sub span a")
	// do something for `sub sub span a`
	stopw.Stop("sub span A", "sub sub span a")
	stopw.Stop("sub span span A")
	stopw.Stop()

	r := stopw.Result()
	b, _ := json.MarshalIndent(r, "", "  ")
	fmt.Println(string(b))

	// Output:
	// {
	//   "id": "cbt0l1ev9mc36rrd56sg",
	//   "started_at": "2022-08-15T17:57:41.317696+09:00",
	//   "stopped_at": "2022-08-15T17:57:41.317702+09:00",
	//   "elapsed": 6333,
	//   "breakdown": [
	//     {
	//       "id": "sub span A",
	//       "started_at": "2022-08-15T17:57:41.317696+09:00",
	//       "stopped_at": "2022-08-15T17:57:41.317702+09:00",
	//       "elapsed": 5958,
	//       "breakdown": [
	//         {
	//           "id": "sub sub span a",
	//           "started_at": "2022-08-15T17:57:41.317696+09:00",
	//           "stopped_at": "2022-08-15T17:57:41.317701+09:00",
	//           "elapsed": 5375
	//         }
	//       ]
	//     },
	//     {
	//       "id": "sub span B",
	//       "started_at": "2022-08-15T17:57:41.317696+09:00",
	//       "stopped_at": "2022-08-15T17:57:41.317702+09:00",
	//       "elapsed": 6333
	//     }
	//   ]
	// }
}

GitHub

View Github