Profile and optimize application performance. Use when diagnosing slow code, measuring CPU/memory usage, generating flame graphs, benchmarking functions, load testing APIs, finding memory leaks, or optimizing database queries.
测量、分析和优化应用程序性能。涵盖CPU分析、内存分析、火焰图、基准测试、负载测试以及特定语言的优化模式。
bash
javascript
// Node.js
console.time(operation);
await doExpensiveThing();
console.timeEnd(operation); // operation: 142.3ms
// 高精度
const start = performance.now();
await doExpensiveThing();
const elapsed = performance.now() - start;
console.log(Elapsed: ${elapsed.toFixed(2)}ms);
python
start = time.perf_counter()
doexpensivething()
elapsed = time.perf_counter() - start
print(fElapsed: {elapsed:.4f}s)
@contextmanager
def timer(label=):
start = time.perf_counter()
yield
elapsed = time.perf_counter() - start
print(f{label}: {elapsed:.4f}s)
with timer(data processing):
process_data()
go
// Go
start := time.Now()
doExpensiveThing()
fmt.Printf(Elapsed: %v\n, time.Since(start))
bash
bash
// 获取快照
const snapshotStream = v8.writeHeapSnapshot();
console.log(Heap snapshot written to:, snapshotStream);
javascript
// 定期打印内存使用情况
setInterval(() => {
const usage = process.memoryUsage();
console.log({
rss: ${(usage.rss / 1024 / 1024).toFixed(1)}MB,
heapUsed: ${(usage.heapUsed / 1024 / 1024).toFixed(1)}MB,
heapTotal: ${(usage.heapTotal / 1024 / 1024).toFixed(1)}MB,
external: ${(usage.external / 1024 / 1024).toFixed(1)}MB,
});
}, 5000);
// 检测内存增长
let lastHeap = 0;
setInterval(() => {
const heap = process.memoryUsage().heapUsed;
const delta = heap - lastHeap;
if (delta > 1024 * 1024) { // > 1MB增长
console.warn(Heap grew by ${(delta / 1024 / 1024).toFixed(1)}MB);
}
lastHeap = heap;
}, 10000);
javascript
// 简单的基准测试函数
function benchmark(name, fn, iterations = 10000) {
// 预热
for (let i = 0; i < 100; i++) fn();
const start = performance.now();
for (let i = 0; i < iterations; i++) fn();
const elapsed = performance.now() - start;
console.log(${name}: ${(elapsed / iterations).toFixed(4)}ms/op (${iterations} iterations in ${elapsed.toFixed(1)}ms));
}
benchmark(JSON.parse, () => JSON.parse({key:value,num:42}));
benchmark(regex match, () => /^\d{4}-\d{2}-\d{2}$/.test(2026-02-03));
bash
cProfile.run(expensive_function(), sort=cumulative)
bash
python
def process_data(data):
result = []
for item in data: # 这个循环是瓶颈吗?
transformed = transform(item)
if validate(transformed):
result.append(transformed)
return result
profiler = LineProfiler()
profiler.addfunction(processdata)
profiler.enable()
processdata(largedataset)
profiler.disable()
profiler.print_stats()
bash
python
from memory_profiler import profile
@profile
def load_data():
data = []
for i in range(1000000):
data.append({id: i, value: fitem_{i}})
return data
tracemalloc.start()
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics(lineno)
for stat in top_stats[:10]:
print(stat)
python
import timeit
go
// 添加到main.go以实现HTTP可访问的分析
import (
net/http
_ net/http/pprof
)
func main() {
go func() {
http.ListenAndServe(localhost:6060, nil)
}()
// ... 应用程序其余部分
}
bash
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 perf-profiler-1775983508 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 perf-profiler-1775983508 技能
skillhub install perf-profiler-1775983508
文件大小: 6.97 KB | 发布时间: 2026-4-13 11:26