2024-07-11 16:37:26 +08:00
|
|
|
package tool
|
|
|
|
|
|
|
|
import "fmt"
|
|
|
|
|
|
|
|
func HumanDuration(nano int64) string {
|
|
|
|
duration := float64(nano)
|
|
|
|
unit := "ns"
|
|
|
|
if duration >= 1000 {
|
|
|
|
duration /= 1000
|
|
|
|
unit = "us"
|
|
|
|
}
|
|
|
|
|
|
|
|
if duration >= 1000 {
|
|
|
|
duration /= 1000
|
|
|
|
unit = "ms"
|
|
|
|
}
|
|
|
|
|
|
|
|
if duration >= 1000 {
|
|
|
|
duration /= 1000
|
|
|
|
unit = " s"
|
|
|
|
}
|
|
|
|
|
|
|
|
return fmt.Sprintf("%6.2f%s", duration, unit)
|
|
|
|
}
|
2025-01-06 23:38:49 -08:00
|
|
|
|
|
|
|
func HumanSize(size int64) string {
|
|
|
|
const (
|
|
|
|
_ = iota
|
|
|
|
KB = 1 << (10 * iota) // 1 KB = 1024 bytes
|
|
|
|
MB // 1 MB = 1024 KB
|
|
|
|
GB // 1 GB = 1024 MB
|
|
|
|
TB // 1 TB = 1024 GB
|
|
|
|
PB // 1 PB = 1024 TB
|
|
|
|
)
|
|
|
|
|
|
|
|
switch {
|
|
|
|
case size >= PB:
|
|
|
|
return fmt.Sprintf("%.2f PB", float64(size)/PB)
|
|
|
|
case size >= TB:
|
|
|
|
return fmt.Sprintf("%.2f TB", float64(size)/TB)
|
|
|
|
case size >= GB:
|
|
|
|
return fmt.Sprintf("%.2f GB", float64(size)/GB)
|
|
|
|
case size >= MB:
|
|
|
|
return fmt.Sprintf("%.2f MB", float64(size)/MB)
|
|
|
|
case size >= KB:
|
|
|
|
return fmt.Sprintf("%.2f KB", float64(size)/KB)
|
|
|
|
default:
|
|
|
|
return fmt.Sprintf("%d bytes", size)
|
|
|
|
}
|
|
|
|
}
|