惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hacker News: Front Page
博客园_首页
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
Recorded Future
Recorded Future
博客园 - Franky
Application and Cybersecurity Blog
Application and Cybersecurity Blog
U
Unit 42
S
Secure Thoughts
博客园 - 司徒正美
美团技术团队
C
Cisco Blogs
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
V
Vulnerabilities – Threatpost
T
Troy Hunt's Blog
S
Security Affairs
爱范儿
爱范儿
AWS News Blog
AWS News Blog
Help Net Security
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
T
Threatpost
F
Fortinet All Blogs
Scott Helme
Scott Helme
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
O
OpenAI News
S
Schneier on Security
Stack Overflow Blog
Stack Overflow Blog
T
Tor Project blog
AI
AI
D
DataBreaches.Net
PCI Perspectives
PCI Perspectives
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
C
CERT Recently Published Vulnerability Notes
腾讯CDC
T
Tenable Blog
人人都是产品经理
人人都是产品经理
Recent Announcements
Recent Announcements
C
Cyber Attacks, Cyber Crime and Cyber Security
Jina AI
Jina AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google Online Security Blog
Google Online Security Blog
S
Securelist
P
Proofpoint News Feed
L
LINUX DO - 最新话题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 基于langchain,Function Call的成功率怎么解决? LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" RAG 设计:Embedding 如何切分 AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 中 Retriever 和 Reranker 的区别 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop BLEU 是什么?——从原理到工程实践 一文讲清:Approve / Permit / Permit2 的本质区别 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
一文讲清楚什么是基准测试(Benchmark)
若-飞 · 2025-12-31 · via 博客园 - 若-飞

在性能优化、系统选型、架构评估中,我们经常听到三个词:

基准测试、压力测试、负载测试

很多人“都测过”,但测完却不知道数据意味着什么,甚至拿压力测试结果当基准测试用,导致结论完全错误。

这篇文章专门讲清楚:
👉 什么是基准测试,它到底该怎么做、什么时候做


一、什么是基准测试(Benchmark)

基准测试,指的是:

可控、稳定、可复现的条件下,测量系统在正常工作状态下的性能表现,并作为后续对比的“基准线”。

一句话理解:

基准测试 = 性能标尺

它不是为了“把系统打崩”,而是为了回答一个更基础的问题:

  • 在理想/标准条件下,我的系统能跑多快?

  • 当前实现的性能处在什么水平?

  • 优化前后,有没有真的变好?


二、基准测试在“测什么”

基准测试关注的是稳定、可对比的性能指标,通常包括:

1️⃣ 吞吐量(Throughput)

  • QPS / TPS

  • 每秒能处理多少请求 / 交易

2️⃣ 延迟(Latency)

  • 平均延迟

  • P95 / P99(非常关键)

3️⃣ 资源消耗

  • CPU 使用率

  • 内存占用

  • IO / 网络消耗

📌 核心点:

指标要稳定、可重复、可横向对比


三、基准测试 vs 压力测试 vs 负载测试

这是最容易混淆、也最重要的一部分。

1️⃣ 基准测试(Benchmark)

目的:测正常性能

特点:

  • 并发、数据规模是可控的

  • 不追求极限

  • 强调公平、可复现

典型问题:

  • 单节点 RPC 最大稳定 QPS 是多少?

  • 某个函数 / SQL / 接口平均耗时是多少?

  • 同样条件下,方案 A 和 B 哪个更快?

👉 结论是“性能水平”


2️⃣ 压力测试(Stress Test)

目的:找系统极限

特点:

  • 并发逐步拉高

  • 直到:

    • 错误率上升

    • 响应时间暴涨

    • 系统崩溃

典型问题:

  • 最大能扛多少并发?

  • 崩溃点在哪?

  • 超载时系统如何表现?

👉 结论是“极限与风险”


3️⃣ 负载测试(Load Test)

目的:模拟真实业务

特点:

  • 并发、请求比例贴近真实场景

  • 通常运行较长时间

  • 验证系统“是否撑得住日常业务”

典型问题:

  • 线上高峰期能不能扛住?

  • 长时间运行会不会内存泄漏?

  • 各模块是否均衡?

👉 结论是“是否能上线”


📊 一张表总结

测试类型 核心目标 是否追极限 是否模拟真实
基准测试 性能基线
压力测试 系统极限
负载测试 业务验证

四、一个典型的基准测试示例(工程视角)

场景:测试一个 RPC 接口性能

测试条件:

  • 单机

  • 并发 50

  • 固定请求参数

  • 缓存开启

  • 测试 5 分钟

输出结果:

  • QPS:3200

  • Avg Latency:12ms

  • P99 Latency:35ms

  • CPU:65%

📌 这个结果就可以作为:

  • 优化前的性能基线

  • 不同实现方案的对比标准

  • 硬件升级前后的对照数据


五、做基准测试的正确姿势

✅ 应该这样做

  1. 固定环境(机器、配置、版本)

  2. 固定测试数据

  3. 多轮测试取平均

  4. 明确是否有缓存

  5. 同时记录资源消耗

❌ 常见错误

  • 用压力测试结果当基准

  • 只看平均值,不看 P99

  • 每次测试环境都不一样

  • 测一次就下结论


六、什么时候一定要做基准测试?

以下场景必须做基准测试

  • 引入新组件 / 新语言 / 新框架

  • 核心代码重构

  • 数据库索引或结构调整

  • 节点 / 服务器规格变更

  • 性能回退排查


七、总结

基准测试不是为了“测崩系统”,而是为了“建立信心”

它回答的是:

  • 我现在的性能处在哪个水平

  • 我的优化是不是有效

  • 不同方案之间,谁更值得选

在工程实践中:

没有基准测试的数据,性能优化基本都是“凭感觉”


如果你愿意,我可以下一步帮你:

  • 把这篇博客 改成偏区块链 / BSC / Geth 版本

  • 补一个 Go / RPC / 数据库的基准测试实战

  • 或直接帮你 写一篇《如何给区块链节点做基准测试》

你打算发在哪个平台?我可以顺手帮你调整风格。