microbenchmark相关内容

如何使用JMH依次运行基准测试中的方法?

在我的情况下,基准测试中的方法应在一个线程中顺序运行,并按顺序修改状态. 例如,基准类中有一个名为 num 的 List .我想要的是:首先,运行 add()将数字附加到列表中.然后,运行 remove()将其从列表中删除. 调用顺序必须为 add()->remove().如果 remove()在 add()之前运行,或者它们同时运行,则它们将引发异常,因为列表中没 ..
发布时间:2021-04-15 19:23:25 Java开发

OpenJDK JMH有时会在结果中打印(* interrupt *).这到底是什么意思?

我使用OpenJDK JMH 0.9.3,有时我在下面得到这样的结果日志文件.(*中断*)在这里是什么意思? 使用以下命令分叉1次:[/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/...]#运行进度:53.85%完成,预计到达时间00:01:26#叉子:1之1#Warmup迭代1:19950765,000 us/op#预热迭代2:(* int ..
发布时间:2021-04-15 19:22:42 其他开发

我应该如何在笔记本电脑的CPU中查找流水线级数

我想研究最新的处理器与标准RISC V实现(RISC V具有5级流水线-获取,解码,内存,ALU和回写)有何不同,但是找不到我应该如何着手解决这个问题,因此在处理器上找到流水线的当前实现方式 我尝试将Intel文档用于i7-4510U文档,但这并没有太大帮助 解决方案 据报道,Haswell的流水线长度为14个阶段(在uop-cache命中时),从L1i提取以进行传统解码时为19个阶 ..
发布时间:2020-11-29 20:04:24 其他开发

对GLSL着色器进行基准测试以比较替代实现的速度

我想使用OpenGL和GLSL着色器绘制二维函数z = f(x,y).我想使用色图将函数的值映射到颜色,但是某些色图是使用HSL或HSV色空间表示的(例如色相图). 您可以在GLSL中(在这里和其他地方)找到hsv2rgb()的不同替代实现. 我如何基准这些着色器(那些功能)以找出最快的着色器? 解决方案 实施所有您想尝试的替代方法,并应用通常的基准测试建议: 重复单个基 ..
发布时间:2020-11-16 02:13:14 其他开发

微基准测试结果检查失败,data.table被引用更改

在SO上有一些答案,其中比较了时间而没有检查结果。但是,我更喜欢查看表达式和是否正确。 microbenchmark 软件包通过 check 参数支持此功能。不幸的是,对于通过引用更改 data.table 的表达式,检查失败,即,检查无法识别结果是不同的。 案例1:data.table表达式中的检查按预期工作 库(data.table) 库(microbenchmark) ..
发布时间:2020-10-15 19:39:19 其他开发

(rdtsc + lfence + rdtsc)和(rdtsc + rdtscp)在测量执行时间上有什么区别吗?

据我所知,相对于rdtsc和rdtscp指令,处理器中运行时顺序的主要区别在于执行是否要等到所有先前的指令都在本地执行后才能执行。 换句话说,这意味着lfence + rdtsc = rdtscp,因为在rdtsc指令之前的lfence使以下rdtsc在本地所有前一条指令完成之后执行。 但是,我看到了一些示例代码,这些代码在测量开始时使用rdtsc,在测量开始时使用rdtscp。使用两 ..
发布时间:2020-10-11 00:09:34 其他开发

为什么添加xorps指令使该功能使用cvtsi2ss并增加了约5倍的速度?

我当时正忙着使用Google Benchmark优化功能,结果遇到了我的代码在某些情况下意外减速的情况。我开始对其进行试验,查看编译后的程序集,并最终提出了一个最小的测试用例来展示该问题。这是我想到的程序集,它表现出这种速度下降: .text 测试: #xorps %xmm0,%xmm0 cvtsi2ss%edi,%xmm0 添加%xmm0,%xmm0 添加%xmm0,%xmm ..
发布时间:2020-10-01 22:35:40 其他开发

如何在Windows中使用cmake构建和链接Google基准

我正在尝试构建Google基准,并使用cmake将其与我的库一起使用.我已经成功建立了google-benchmark并使用cmake成功运行了所有测试.不幸的是,我无法使用cmake或cl将其与Windows中的C ++代码正确链接. 我认为的问题是google-benchmark会在src文件夹中构建库,即它是在src/Release/benchmark.lib中构建的,如果我使用$ { ..
发布时间:2020-09-20 18:54:40 C/C++开发

测量计时器的精度(例如Stopwatch/QueryPerformanceCounter)

考虑到C#中的Stopwatch类可以在其下面使用类似三个不同的计时器之类的东西 系统计时器,例如大约+-10 ms的精度取决于可以使用时间戳计数器(TSC),例如滴答频率为2.5MHz或1滴答= 400 ns,因此理想情况下是这样的精度. 高精度事件计时器(HPET),例如滴答频率为25MHz或1滴答= 40 ns,因此理想情况下是这样的精度. 我们如何测量其可观察的精度?精度定义 ..
发布时间:2020-09-20 18:54:36 C#/.NET

为什么第一次跑步总是慢得多?

我写了一个宏,报告执行给定操作所需的时间.它会运行多次,并打印出每次运行的时间(以纳秒为单位).第一次运行总是比随后的运行花费更多的时间.为什么会这样? 以下是10 x 10次运行的结果,时间为Thread.yield(): > (dotimes [x 10] (prn (times 10 (Thread/yield)))) [55395 1659 622 561 591 702 7 ..
发布时间:2020-09-20 18:54:34 Java开发

将代码带入L1指令高速缓存而不执行

比方说,我有一个计划作为基准测试的一部分执行的函数.我想在执行之前将此代码带入L1指令高速缓存中,因为我不想将I $丢失的代价作为基准测试的一部分. 执行此操作的明显方法是在基准测试之前至少执行一次代码,从而“预热"代码并将其放入L1指令高速缓存以及可能的uop高速缓存等. 在我不想执行代码的情况下有哪些选择(例如,因为我希望从指令地址中删除键的各种预测变量是冷的)? 解决方案 ..
发布时间:2020-09-20 18:38:55 其他开发

“逃脱"和“口语"在MSVC中等效

在钱德勒·卡鲁斯(Chandler Carruth)的CppCon 2015演讲中,他介绍了两个神奇的功能,它们可以击败优化器而不会造成任何额外的性能损失. > 作为参考,以下是函数(使用GNU风格的内联汇编): void escape(void* p) { asm volatile("" : : "g"(p) : "memory"); } void clobber() { ..
发布时间:2020-09-20 18:38:25 其他开发

如何更简洁地找到缺失值?

以下代码检查x和y是不同的值(变量x,y,z只能具有值a,b或c)和如果是这样,请将z设置为第三个字符: if x == 'a' and y == 'b' or x == 'b' and y == 'a': z = 'c' elif x == 'b' and y == 'c' or x == 'c' and y == 'b': z = 'a' elif x == 'a' an ..
发布时间:2020-09-20 18:37:10 Python

我不明白DoNotOptimizeAway的定义

我正在检查 Celero git存储库 DoNotOptimizeAway的含义.但是我还是不明白.请您能帮我用外行的术语理解它吧.尽你所能. 提供了celero :: DoNotOptimizeAway模板,以确保 优化编译器不会消除您的功能或代码.自从 所有示例基准及其测试中都使用了此功能 基线,它的时间开销在比较中被抵消了. 解决方案 您没有包括定义,仅包括文档.我认为您是在寻 ..
发布时间:2020-09-20 18:36:04 C/C++开发

惯用的绩效评估方式?

我正在为我的项目评估网络+渲染工作量. 程序连续运行一个主循环: while (true) { doSomething() drawSomething() doSomething2() sendSomething() } 主循环每秒运行60次以上. 我想查看性能细分,每个过程花费多少时间. 我担心的是,如果我为每个过程的每个入口和出口打印时间间隔 ..
发布时间:2020-09-20 18:32:27 其他开发

在amd64上使用SIMD,什么时候使用更多指令比从内存加载更好?

我有一些对性能敏感的代码.使用SSEn和AVX的SIMD实现使用大约30条指令,而使用4096字节查找表的版本使用大约8条指令.在微基准测试中,查找表的速度提高了40%.如果我使用微基准测试,尝试使缓存中的100次迭代无效,则它们的外观大致相同.在我的真实程序中,出现似乎是非加载版本更快,但是要获得可证明的良好测量结果确实很困难,而且我的测量方法是双向的. 我只是想知道是否有一些好的方法来考 ..
发布时间:2020-09-15 05:37:45 其他开发