14得票1回答
直接字节缓冲区的相对读取性能与绝对读取性能比较

在测试直接使用java.nio.ByteBuffer的读取性能时,我发现绝对读取的速度平均比相对读取快2倍。同时,如果我比较相对读取和绝对读取的源代码,这两者的代码基本相同,唯一的区别在于相对读取维护了一个内部计数器。我想知道为什么会出现如此明显的速度差异? 以下是我的JMH基准测试的源代码...

14得票1回答
System.arraycopy与固定长度

我正在尝试使用JMH进行实验 (http://openjdk.java.net/projects/code-tools/jmh/),偶然间遇到了一个奇怪的结果。 我正在测试对数组进行浅拷贝的方法,并且我可以观察到预期的结果(通过循环遍历数组是一个不好的想法,而在性能方面,在#clone()、...

13得票2回答
在amd64上使用SIMD时,何时更好地使用更多指令而不是从内存中加载?

我有一些高性能代码。使用SSEn和AVX的SIMD实现需要约30条指令,而使用4096字节查找表的版本只需要约8条指令。在微基准测试中,查找表快了40%。如果我进行缓存无效化测试,每100次迭代,它们看起来差不多。在我的实际程序中,似乎非加载版本更快,但很难得到可靠的测量结果,而我的测量结果两...

13得票1回答
分支预测失效了吗?

关于这个问题的参考,回答说明未排序的数组需要更多时间,因为它无法通过分支预测测试。但是如果我们对程序进行微小的更改:import java.util.Arrays; import java.util.Random; public class Main{ public static...

12得票5回答
如何在Windows上使用CMake构建和链接Google Benchmark

我正在尝试使用cmake构建并使用google-benchmark库。我已成功地使用cmake构建了google-benchmark,并运行了其所有测试,但是在Windows上使用cmake或cl时,我无法正确地将其与我的C++代码链接。 我认为问题在于google-benchmark在sr...

11得票2回答
微基准测试作为数据框或矩阵。

有没有办法将函数microbenchmark::microbenchmark的输出转换为数据框或矩阵?例如v <- rnorm(100) m <- microbenchmark(mean(v), sum(v)) 输出Unit: nanoseconds expr min ...

11得票1回答
为什么对于小数组,Arrays.copyOf比System.arraycopy快2倍?

我最近在进行一些基准测试,发现了一些非常有趣的结果,但目前无法解释。以下是该基准测试:@BenchmarkMode(Mode.Throughput) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 10, time = 1, batchSi...

11得票2回答
在Ruby中,`arr << x`比`arr += [x]`更快。

直观来说,后者应该比前者更快。然而,当我看到基准测试结果时,我感到非常惊讶: require 'benchmark/ips' b = (0..20).to_a; y = 21; Benchmark.ips do |x| x.report('&lt;&lt;') { ...

11得票1回答
每次迭代控制操作数量的JMH

我的当前设置: public void launchBenchmark() throws Exception { Options opt = new OptionsBuilder() .include(this.getClass().getName()...

11得票11回答
第一次运行Java循环为什么会很慢?[Sun HotSpot 1.5,sparc]

在对 Solaris SPARC 上的一些 Java 代码进行基准测试时,我注意到第一次调用基准测试的函数速度非常慢(差了 10 倍): 第一次 | 1 | 25295.979 毫秒 第二次 | 1 | 2256.990 毫秒 第三次 | 1 | 2250.575 毫秒 为什么会这样?我怀...