面试题答案
一键面试常见性能指标
- 响应时间:指从请求发起至收到响应所经历的时长,反映系统处理单个请求的速度。
- 吞吐量:单位时间内系统能够处理的请求数量,衡量系统处理能力。
- 资源利用率:如CPU使用率、内存使用率等,体现系统对硬件资源的利用程度。
使用Go语言内置工具测量
- 响应时间
package main import ( "fmt" "time" ) func main() { start := time.Now() // 模拟业务逻辑 time.Sleep(1 * time.Second) elapsed := time.Since(start) fmt.Printf("响应时间: %s\n", elapsed) }
- 吞吐量
package main import ( "fmt" "time" ) const requestCount = 1000 func main() { start := time.Now() for i := 0; i < requestCount; i++ { // 模拟单个请求处理 time.Sleep(1 * time.Millisecond) } elapsed := time.Since(start) throughput := float64(requestCount) / elapsed.Seconds() fmt.Printf("吞吐量: %.2f requests/second\n", throughput) }
- CPU使用率
- Go语言标准库没有直接获取CPU使用率的功能,可借助
runtime
包结合外部命令实现,如在Linux下可结合/proc/stat
文件。以下是简单示例思路,非完整代码:
package main import ( "fmt" "runtime" "time" ) func main() { var mu runtime.MemStats runtime.ReadMemStats(&mu) start := time.Now() // 模拟业务逻辑 for i := 0; i < 1000000; i++ { _ = i * i } elapsed := time.Since(start) runtime.ReadMemStats(&mu) // 进一步处理获取CPU相关指标(此处省略复杂计算) fmt.Printf("经过时间: %s\n", elapsed) }
- Go语言标准库没有直接获取CPU使用率的功能,可借助
- 内存使用率
package main import ( "fmt" "runtime" ) func main() { var mu runtime.MemStats runtime.ReadMemStats(&mu) fmt.Printf("当前内存使用: %d bytes\n", mu.Alloc) }