10得票1回答
编译过的R代码实际上比启用JIT的纯R代码运行更慢。

从Efficient R programming the byte compiler和R docment r byte compiler中,我了解到可以使用cmpfun将纯R函数编译成字节码以提高速度,而enableJIT可以通过启用即时编译来提高速度。 因此,我决定像第一个链接那样自己进行...

20得票3回答
为什么边界检查无法被消除?

我写了一个简单的benchmark,以便找出当数组通过按位与运算来计算时,边界检查是否可以被消除。这基本上是几乎所有哈希表所做的:它们计算 h & (table.length - 1) 作为索引进入table,其中h是hashCode或派生值。results显示边界检查未被消除。...

18得票1回答
循环惯用语的奇怪 JIT 优化失效

在分析最近这里的一个问题的结果时,我遇到了一个非常奇怪的现象:显然一层额外的HotSpot JIT优化实际上会使我的机器执行速度变慢。这是我用于测量的代码:@OutputTimeUnit(TimeUnit.NANOSECONDS) @BenchmarkMode(Mode.AverageTime...

8得票4回答
最快的Linux系统调用

在支持syscall和sysret的x86-64英特尔系统上,从64位用户代码到原始内核的最快系统调用是什么? 具体而言,它必须是一种通过syscall/sysret用户内核转换来实现的系统调用1,但除此之外不需要做太多的工作。它甚至不需要自己执行系统调用:只要出现某种早期错误,就可以避免在...

10得票2回答
为什么Document.querySelector比Element.querySelector更高效

我进行了一些迭代测试,以测试 Document.querySelector 和 Element.querySelector 的效率。 标记: <form> <input type="text" /> </form> 脚本: 使用 Documen...

9得票1回答
为什么添加一个xorps指令会让使用cvtsi2ss和addss的这个函数变快大约5倍?

我在使用Google基准测试对函数进行优化时进行了尝试,但在某些情况下我的代码出现了意外的减速。我开始进行实验,并查看编译后的汇编代码,最终创建了一个展示该问题的最小化测试案例。以下是我创建的展示这种减速情况的汇编代码: .text test: #xorps %xmm0, ...

976得票11回答
如何在Java中编写正确的微基准测试?

如何编写(和运行)Java中的正确微基准测试? 我正在寻找一些代码示例和注释,以说明需要考虑的各种问题。 例如:基准测试应该测量时间/迭代还是迭代/时间,以及为什么? 相关:秒表基准测试是否可接受?

8得票1回答
清空英特尔Core 2 Duo的指令流水线?

我正在为一些C语言中非常短的操作编写微基准测试代码。例如,我正在测量调用空函数所需的周期数,具体取决于传递的参数数量。 目前,我使用RDTSC指令在每个操作之前和之后计时,以获取CPU的周期计数。然而,我担心在第一个RDTSC之前发出的指令可能会减慢我正在测量的实际指令。我还担心在第二个RD...

7得票3回答
多线程环境下的基准测试

我正在学习多线程并发,发现在多线程环境下 Object.hashCode 的速度会变慢,同样数量的对象进行计算时,运行 4 个 threads 相对于 1 个 thread,所需时间要多出一倍以上。 但根据我的理解,这应该并行处理需要同样的时间。 你可以更改线程数。每个线程要做相同的工作量...

55得票4回答
Scala中隐藏的性能成本是什么?

我看到了这个旧问题,并用scala 2.10.3进行了以下实验。 我重写了Scala版本,使用明确的尾递归: import scala.annotation.tailrec object ScalaMain { private val t = 20 private def ru...