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) } 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) } }