如何使用文件中的数据进行微基准测试?

阿比吉特·萨卡尔

我正在尝试对使用Scalameter计算运行中位数的两种不同实现进行微基准测试我有一些测试文件,大小不一,数字来自哪里。问题是,以下代码立即完成,根本没有生成任何类型的基准。

object MedianMaintenanceBenchmark extends Bench[Double] {

  /* configuration */

  lazy val executor = LocalExecutor(
    new Warmer.Default,
    Aggregator.median[Double],
    measurer
  )
  lazy val measurer = new Measurer.Default
  lazy val reporter = new LoggingReporter[Double]
  lazy val persistor: Persistor.None.type = Persistor.None

  /* inputs */

  private val files: Gen[String] = Gen.enumeration("files")("median-test")
  private val num: Gen[Seq[Int]] = (for (f <- files) yield numbers(f)).cached

  /* tests */

  performance of "MedianMaintenance" config (
    exec.benchRuns -> 10
    ) in {
    measure method "using heap" in {
      using(num) in {
        xs => MedianMaintenanceUsingHeaps(xs).medians
      }
    }
  }

  private def numbers(filename: String): Seq[Int] = // elided
}

输出:

::Benchmark MedianMaintenance.using heap::
cores: 8
hostname: ***
name: OpenJDK 64-Bit Server VM
osArch: x86_64
osName: Mac OS X
vendor: Azul Systems, Inc.
version: 11.0.1+13-LTS
Parameters(files -> median-test): 3.612799 ms

这里发生了什么?

编辑:

如下更改代码至少可以做一些事情,但不尊重这些选项。它似乎对文件“中位数”总共运行了 18 次测试,这不是 3 + 10 的总和。

object MedianMaintenanceBenchmark extends Bench.ForkedTime {

  /* configuration */
  override def aggregator: Aggregator[Double] = Aggregator.median

  private val opts = Context(
    exec.minWarmupRuns-> 3,
    exec.maxWarmupRuns -> 3,
    exec.benchRuns -> 10,
    exec.jvmflags -> List("-Xms2g", "-Xmx2g")
  )

  /* inputs */

  private val files: Gen[String] = Gen.enumeration("files")("median-test", "Median")
  private val num: Gen[Seq[Int]] = (for (f <- files) yield numbers(f)).cached

  /* tests */

  performance of "MedianMaintenance" config opts in {
    measure method "using heap" in {
      using(num) in {
        xs => MedianMaintenanceUsingHeaps(xs).medians
      }
    }

    measure method "using red-black BST" in {
      using(num) in {
        xs => MedianMaintenanceUsingRedBlackTree(xs).medians
      }
    }
  }

  private def numbers(filename: String): Seq[Int] = // elided
}
阿比吉特·萨卡尔

OP在这里:几个小时后,我终于能够通过可悲过时的文档,无论如何存在,并找出以下内容:

除了我上面的编辑之外,还有几种方法可以覆盖执行计数等。阿尔。

  1. 对于当前文件中的所有基准,使用 override def defaultConfig: Context = Context(exec.benchRuns -> 10)
  2. 对于特定的基准测试,定义内联或定义一个val opts: Context并使用config opts inDSL。
  3. 对于特定方法,除了config opts in在方法 DSL 中使用外,执行与 #2 相同的操作
  4. 文档声称可以覆盖每个“曲线”的配置,但我无法找到“曲线”是什么或如何覆盖它的配置。

IndependentSamples = 产生的独立 JVM 的数量。

预热是(minWarmupRuns to maxWarmupRuns)使用一组测试数据(随机选择?)在每个 JVM 上的运行时间(有意义),然后测试在每个 JVM 上运行benchRuns多次。运行多少次预热取决于“稳态”的检测。似乎每个 JVM 最终都有一个未计算的执行。

Total number of executions = independentSamples * ((minWarmupRuns to maxWarmupRuns) + benchRuns + 1)

例如,给定:

Context(
  exec.minWarmupRuns -> 5,
  exec.maxWarmupRuns -> 5,
  exec.benchRuns -> 10,
  exec.independentSamples -> 2
)

将有 32 次执行被测代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java 12的微基准测试套件?

来自分类Dev

如何使用Caliper进行基准测试?

来自分类Dev

如何对函数的内存使用进行基准测试?

来自分类Dev

Prolog中微基准测试的维度

来自分类Dev

使用JMH Java微基准测试的随机数据测试浮点打印

来自分类Dev

在JMH中对具有不同值的循环进行微基准测试

来自分类Dev

使用 azure 数据湖对 polybase 进行基准测试

来自分类Dev

使用SELinux进行基准测试

来自分类Dev

如何使用core.async实现Skynet 1m微基准测试?

来自分类Dev

如何在Elasticsearch中对执行进行基准测试?

来自分类Dev

如何在Elasticsearch中对执行进行基准测试?

来自分类Dev

如何正确使用Siege对GET请求进行基准测试?

来自分类Dev

如何使用SQL Server对SQL Server查询进行基准测试

来自分类Dev

我如何对我的硬盘进行基准测试?

来自分类Dev

如何对Kotlin程序进行基准测试?

来自分类Dev

我如何对我的硬盘进行基准测试?

来自分类Dev

使用Ab对多个URL进行基准测试

来自分类Dev

在Caffe中对模型进行基准测试-数据集会有所作为吗?

来自分类Dev

为什么第一次进行微基准测试总是最慢?

来自分类Dev

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

来自分类Dev

Java 8用于微基准测试的框架

来自分类Dev

使用siege vs wrk进行负载测试和基准测试

来自分类Dev

BaseX中的基准测试:如何设置

来自分类Dev

如何在处理程序中对龙卷风处理程序进行基准测试?

来自分类Dev

如何在Rails应用中对宝石加载时间进行基准测试

来自分类Dev

如何在处理程序中对龙卷风处理程序进行基准测试?

来自分类Dev

如何在嵌入式Linux设备中对内存进行基准测试?

来自分类Dev

如何使用 BSDS500 基准测试?

来自分类Dev

如何使用Linux发行版对RAM内存进行基准测试?

Related 相关文章

  1. 1

    如何使用Java 12的微基准测试套件?

  2. 2

    如何使用Caliper进行基准测试?

  3. 3

    如何对函数的内存使用进行基准测试?

  4. 4

    Prolog中微基准测试的维度

  5. 5

    使用JMH Java微基准测试的随机数据测试浮点打印

  6. 6

    在JMH中对具有不同值的循环进行微基准测试

  7. 7

    使用 azure 数据湖对 polybase 进行基准测试

  8. 8

    使用SELinux进行基准测试

  9. 9

    如何使用core.async实现Skynet 1m微基准测试?

  10. 10

    如何在Elasticsearch中对执行进行基准测试?

  11. 11

    如何在Elasticsearch中对执行进行基准测试?

  12. 12

    如何正确使用Siege对GET请求进行基准测试?

  13. 13

    如何使用SQL Server对SQL Server查询进行基准测试

  14. 14

    我如何对我的硬盘进行基准测试?

  15. 15

    如何对Kotlin程序进行基准测试?

  16. 16

    我如何对我的硬盘进行基准测试?

  17. 17

    使用Ab对多个URL进行基准测试

  18. 18

    在Caffe中对模型进行基准测试-数据集会有所作为吗?

  19. 19

    为什么第一次进行微基准测试总是最慢?

  20. 20

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

  21. 21

    Java 8用于微基准测试的框架

  22. 22

    使用siege vs wrk进行负载测试和基准测试

  23. 23

    BaseX中的基准测试:如何设置

  24. 24

    如何在处理程序中对龙卷风处理程序进行基准测试?

  25. 25

    如何在Rails应用中对宝石加载时间进行基准测试

  26. 26

    如何在处理程序中对龙卷风处理程序进行基准测试?

  27. 27

    如何在嵌入式Linux设备中对内存进行基准测试?

  28. 28

    如何使用 BSDS500 基准测试?

  29. 29

    如何使用Linux发行版对RAM内存进行基准测试?

热门标签

归档