当前位置: 首页 > wzjs >正文

中国银行网站建设wordpress搜索条件

中国银行网站建设,wordpress搜索条件,满城做网站电话,下面不属于网络推广方法Benchmark 以下是一篇关于Google Benchmark库的全面介绍及使用指南,包含完整C代码示例和核心功能覆盖: Google Benchmark:C 性能基准测试指南 一、库简介 Google Benchmark 是一个专为 C 设计的微基准测试库,用于精确测量代码片…

Benchmark

以下是一篇关于Google Benchmark库的全面介绍及使用指南,包含完整C++代码示例和核心功能覆盖:

Google Benchmark:C++ 性能基准测试指南

一、库简介

Google Benchmark 是一个专为 C++ 设计的微基准测试库,用于精确测量代码片段的执行效率。其核心特性包括:

  • 多维度测试:支持参数化测试、多线程场景和自定义数据规模
  • 智能迭代:自动计算最佳迭代次数保证统计显著性
  • 精准计时:提供真实时间(wall time)和 CPU 时间双维度测量
  • 跨平台支持:兼容 Linux/Windows/macOS,支持 CMake 构建

二、环境安装

通过源码编译(推荐):

1. 安装依赖
sudo apt install git cmake build-essential 
2. 克隆仓库
git clone https://github.com/google/benchmark.git  
cd benchmark 
3. 构建安装
cmake -E make_directory build 
cmake -S . -B build -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON 
cmake --build build --config Release 
sudo cmake --install build 

三、基础使用

  • 示例1:基本性能测试
#include <benchmark/benchmark.h>static void BM_StringCreation(benchmark::State& state) {for (auto _ : state) {std::string empty_string;benchmark::DoNotOptimize(empty_string); // 防止编译器优化 }
}
BENCHMARK(BM_StringCreation);static void BM_StringCopy(benchmark::State& state) {std::string x = "hello";for (auto _ : state) {std::string copy(x);benchmark::ClobberMemory(); // 强制内存操作计入计时 }
}
BENCHMARK(BM_StringCopy);BENCHMARK_MAIN();

输出解读:

BM_StringCreation        3.27 ns         3.27 ns    210470863 
BM_StringCopy           21.35 ns        21.35 ns     32765432 
  • 第一列:测试名称
  • 第二列:每次迭代实际耗时(纳秒)
  • 第三列:CPU 时间
  • 第四列:自动计算的迭代次数

四、进阶功能

  1. 参数化测试
static void BM_VectorPushBack(benchmark::State& state) {for (auto _ : state) {std::vector<int> v;v.reserve(state.range(0)); for (int i = 0; i < state.range(0);  ++i) {v.push_back(i); }}state.SetComplexityN(state.range(0));  // 复杂度分析 
}
// 测试不同数据规模:8, 64, 512, 4096
BENCHMARK(BM_VectorPushBack)->RangeMultiplier(8)->Range(8, 4096)->Complexity();// 多参数测试 
BENCHMARK(BM_SomeFunc)->Args({128, 256})->Args({512, 1024});
  1. 多线程测试
static void BM_AtomicIncrement(benchmark::State& state) {std::atomic<int> val(0);for (auto _ : state) {benchmark::DoNotOptimize(val.fetch_add(1)); }state.SetItemsProcessed(state.iterations()); 
}
BENCHMARK(BM_AtomicIncrement)->Threads(2)->Threads(4)->UseRealTime();
  1. 计时控制
static void BM_PausedTiming(benchmark::State& state) {std::vector<int> data;for (auto _ : state) {state.PauseTiming(); // 暂停计时 data = GenerateRandomData(1000);state.ResumeTiming(); // 恢复计时 ProcessData(data);}
}
BENCHMARK(BM_PausedTiming);

五、完整测试案例

#include <benchmark/benchmark.h>
#include <vector>
#include <algorithm>// 测试不同排序算法的性能 
template <typename T>
static void BM_Sort(benchmark::State& state) {std::vector<T> data(state.range(0)); std::generate(data.begin(),  data.end(),  []{ return rand() % 1000; });for (auto _ : state) {state.PauseTiming();auto temp = data; // 复制数据避免原地排序影响 state.ResumeTiming();std::sort(temp.begin(),  temp.end()); }state.SetBytesProcessed(state.iterations()  * data.size()  * sizeof(T));
}BENCHMARK_TEMPLATE(BM_Sort, int)->Range(1<<10, 1<<20)->Unit(benchmark::kMillisecond);// 多线程版本 
static void BM_ParallelSort(benchmark::State& state) {std::vector<int> data(state.range(0)); std::generate(data.begin(),  data.end(),  []{ return rand() % 1000; });for (auto _ : state) {auto temp = data;benchmark::DoNotOptimize(temp.data()); std::sort(std::execution::par, temp.begin(),  temp.end()); }
}
BENCHMARK(BM_ParallelSort)->Range(1<<20, 1<<24)->Threads(4)->UseRealTime();BENCHMARK_MAIN();

六、最佳实践

  • 避免优化干扰:使用 benchmark::DoNotOptimize() 和 benchmark::ClobberMemory()
  • 合理设置范围:通过 ->Range() 和 ->Arg() 覆盖典型用例和边界条件
  • 复杂度分析:结合 SetComplexityN() 和 ->Complexity() 进行算法复杂度验证
  • 资源统计:使用 SetBytesProcessed() 和 SetItemsProcessed() 统计吞吐量
  • 结果可视化:通过 --benchmark_format=console|json 输出格式控制

七、扩展功能

  • 自定义报告格式:继承 benchmark::ConsoleReporter 实现自定义输出
  • 内存统计:集成 benchmark::MemoryManager 跟踪内存使用情况
  • 对比测试:使用 BENCHMARK_MAIN() 自动生成的对比表格
  • Python集成:通过 pybind11 实现 Python 脚本控制测试流程
    通过以上方法和示例,开发者可以全面掌握代码性能特征,做出基于数据的优化决策。Google Benchmark 的详细文档可通过其 GitHub 仓库获取。

完整代码

Github

作者郑天佐
邮箱zhengtianzuo06@163.com
主页http://www.zhengtianzuo.com
githubhttps://github.com/zhengtianzuo

文章转载自:

http://CFgsQVoP.LwnwL.cn
http://BPLBiINo.LwnwL.cn
http://9OLRSYYP.LwnwL.cn
http://TROfv7O4.LwnwL.cn
http://fw3jMIKn.LwnwL.cn
http://I2VsSZQB.LwnwL.cn
http://iDTIBSTK.LwnwL.cn
http://IGGDoglG.LwnwL.cn
http://nrMHEmyz.LwnwL.cn
http://i3RVCPfB.LwnwL.cn
http://Z7MXQkZg.LwnwL.cn
http://5BWzczoY.LwnwL.cn
http://sORwOhQ7.LwnwL.cn
http://1iOrBl5j.LwnwL.cn
http://KSvqmj0X.LwnwL.cn
http://EG9aaZKH.LwnwL.cn
http://PZmcOZ6R.LwnwL.cn
http://L8AzjGNu.LwnwL.cn
http://XabWPK7o.LwnwL.cn
http://4AOYLMVI.LwnwL.cn
http://yXPyxbLA.LwnwL.cn
http://wSAGMmYK.LwnwL.cn
http://gavFTDQc.LwnwL.cn
http://juytAEFL.LwnwL.cn
http://ufV72MQs.LwnwL.cn
http://gkzGi2Ic.LwnwL.cn
http://DtEBHyqW.LwnwL.cn
http://aG8q7EE1.LwnwL.cn
http://WQ6gemes.LwnwL.cn
http://mryNweD8.LwnwL.cn
http://www.dtcms.com/wzjs/741094.html

相关文章:

  • 建设大型的企业网站费用网站子站怎么做
  • 北京制作网站公司哪家好如何做超一个电子商务网站
  • 陕西省建设厅申报网站信金在线制作网站
  • 成都网站注册wordpress 空白
  • 宝安做网站怎么样网站备案最快
  • 网站与经营网站微信推广方式有哪些
  • 商业设计网站有哪些做网站云服务器还是云虚拟主机
  • asp.net不适合做网站网页调用 wordpress 图片编辑器
  • wordpress 增加子目录合肥seo优化外包公司
  • 北京网站建设品牌免费网站模板
  • 建设网站需要了解些什么东西哪个网站可以做简历
  • 保定手机网站建设wordpress前端登录页面
  • 做网站济南西网站后台开发技术
  • 衡水哪儿做wap网站比较好的做网站的公司
  • 怎么样建设自己网站淄博营销网站建设服务
  • 北京市朝阳区住房建设网站微信_网站提成方案点做
  • 网站制作完成之后wordpress笑话类模板
  • 做网站前端网址可以自己写吗企业微信和个人微信的区别
  • 惠州网站建设企业服装设计专业有前途吗
  • 淘宝客网站开发平台潍坊模板建站定制
  • 徐州网站建设xlec徐州网站建设的特点
  • 万荣做网站中英文网站建设用两个域名
  • 机关网站建设费入什么科目去广告店当学徒有用吗
  • 全能网站建设pdf蝴蝶传媒网站推广
  • 珠宝网站源码怎么自学电商运营
  • 沧州网站建设多少钱最好的网站排名优化工作室
  • 微信网站模块推广营销策划方案
  • 网页免费建站职业技能培训中心
  • 做昆特牌的网站php网站开发招聘需求分析
  • 学院网站建设的特色网站建设中啥意思