问题标签 [microbenchmark]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1312 浏览

java - java是否缓存方法的结果

我使用JMH 来指定操作的复杂性。如果您从未与 JMH 合作过,请不要担心。JMH 将estimateOperation多次启动该方法,然后获取平均时间。

问题:[窄]这个程序Math.cbrt(Integer.MAX_VALUE)每次都会计算吗?还是只计算一次然后返回缓存结果?

问题:[广泛]: JVM 是否曾经缓存过方法的结果?

0 投票
0 回答
48 浏览

javascript - 有没有办法对浏览器进行基准测试?

我正在开发一个向浏览器客户端发送数据的应用程序,该客户端将执行一些计算并将结果发回给我。我需要一个标准来决定我可以向浏览器发送多少数据。为此,我考虑检查客户端的 CPU 并根据机器的底层容量发送作业。问题是通过浏览器(JavaScript)不可能(据我所知)获得机器的规格。第一个问题是:有没有办法通过浏览器检查机器的规格?

由于我找不到解决方案(即无法先验地知道浏览器可以承受多少),我试图通过计算浏览器的吞吐量来自动对我的应用程序进行基准测试(即我发送“每个作业”秒”,看看吞吐量是“每秒 1 个结果”)。我可以在浏览器中添加更多的 WebWorker 以并行执行,但在某些时候,鉴于硬件的限制,添加更多也无济于事。当我达到上限时(即通过添加更多 WebWorkers 吞吐量不会增加),我知道我达到了机器的极限。你们知道是否有更好的方法来做我想做的事情吗?

谢谢

0 投票
1 回答
777 浏览

database-connection - 在连接池的微基准测试上下文中,“连接周期操作数/毫秒”和“语句周期操作数/毫秒”是什么意思?

我指的是HikariCP microbenchmark

我看到了两个我不太了解的指标,即

  • 连接周期操作数/毫秒
  • 语句周期操作数/毫秒

有人可以向我解释上述指标/测量在数据库连接上下文中的含义吗?

0 投票
3 回答
590 浏览

java - 由于 JIT 编译,Caliper 基准测试失败

我得到了一个 Caliper 基准,如下所示:

所以,我有一个创建数据结构(createCourse(...))的方法,我想测量创建这个结构需要多长时间。

但是,当我运行基准测试时,出现以下异常:

异常告诉我,由于 JIT 编译,基准测试失败。那么,如何防止这里的 JIT 编译呢?

我已经尝试使用随机值初始化数据结构(如您在代码中看到的那样),我尝试在测试中返回一个值(如您在代码中看到的那样)并且我尝试使用该course对象,例如调用course.getSize()在上面。但没有任何效果。

0 投票
1 回答
2060 浏览

r - autoplot.microbenchmark 实际绘制的是什么?

根据文档,microbenchmark:::autoplot“使用 ggplot2 生成更清晰的微基准时序图。”

凉爽的!让我们试试示例代码:

微基准图

我在文档中看不到任何关于...柔软的波动,但我从函数创建者的这个答案中最好的猜测是,这就像一系列平滑的运行时间的箱线图,上图和下图四分位数连接在形状的主体上。也许?这些情节看起来太有趣了,以至于不知道这里发生了什么。

这是什么阴谋?

0 投票
1 回答
670 浏览

java - JMH 微基准测试递归快速排序

您好,我正在尝试对各种排序算法进行微基准测试,但 jmh 和基准测试快速排序遇到了一个奇怪的问题。也许我的实现有问题。如果有人可以帮助我看看问题出在哪里,我会很感兴趣。首先,我使用带有 jdk 7 和 jmh 0.9.1 的 ubuntu 14.04。这是我尝试进行基准测试的方法:

还有其他算法,但我将它们排除在外,因为它们或多或少都可以。现在由于某种原因快速排序非常慢。时间慢了好几倍!甚至更多——我需要分配更多的堆栈空间让它在没有 StackOverflowException 的情况下运行。看起来由于某种原因快速排序只是做了很多递归调用。有趣的是,当我在主类中简单地运行算法时 - 它运行良好(具有相同的随机分布和 100000 个元素)。无需增加堆栈,简单的 nanotime 基准测试显示的时间非常接近其他算法。在基准测试中,当使用 jmh 进行测试时,JDK 排序非常快,并且与其他具有天真的纳米时间基准测试的算法一致。我在这里做错了什么还是错过了什么?这是我的快速排序算法:

现在我明白了,由于我的枢轴选择,如果我在已经排序的数据上运行它,我的算法会非常慢(O(n^2))。但是我仍然在随机数据上运行它,即使我尝试在我的主要方法中对排序数据运行它时,它也比在随机数据上使用 jmh 的版本快得多。我很确定我在这里遗漏了一些东西。您可以在此处找到具有其他算法的完整项目:https ://github.com/ignl/SortingAlgos/

0 投票
1 回答
500 浏览

r - 微基准库中的 lq 和 uq 是什么?

抱歉问新手问题。我不知道如何解释微基准测试结果中的 lq 和 uq 列。这是一个例子:

0 投票
1 回答
5688 浏览

performance - OpenJDK JMH“分数错误”到底是什么意思?

我正在使用http://openjdk.java.net/projects/code-tools/jmh/进行基准测试,结果如下:

p>

“分数错误”列的确切含义是什么以及如何解释它?

0 投票
1 回答
384 浏览

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

我使用 OpenJDK JMH 0.9.3,有时我会得到一个如下所示的结果日志文件。这里的 (*interrupt*) 是什么意思?

0 投票
1 回答
353 浏览

java - 什么 JVM 优化导致了这些性能结果?

在 Java REST 服务性能测试中,我得到了一个意想不到的模式:在每次调用中创建并返回始终相同的值对象的方法比只返回存储在类或对象字段中的值对象的另一个版本运行得更快。

代码:

字节码:

  • 内联(更快):getstatic、invokestatic、invokevirtual、areturn
  • 静态字段(较慢):getstatic、areturn
  • 对象字段(较慢):aload、getfield、areturn

性能(使用 Apache AB,单线程,多次运行,结果一致):

  • 内联:17078.29 [#/sec](平均值)
  • 静态场:5242.64 [#/sec](平均值)
  • 对象字段:5417.40 [#/sec](平均值)

环境:RHEL6 + JDK Oracle 1.7.0_60-b19 64bits

JVM是否有可能使用本机代码优化了内联版本,但从未考虑优化其他两个,因为它们已经很小了?