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

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

48得票1回答
为什么StringBuilder链接模式sb.append(x).append(y)比普通的sb.append(x); sb.append(y)更快?

我有一个微基准测试,结果非常奇怪:@BenchmarkMode(Mode.Throughput) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS, batc...

7得票1回答
如何使用jmh测量分配率?

JMH似乎在大多数卡钳功能方面都比caliper做得更好,但我无法弄清如何测量分配速率,这通常对于在微基准测试中查看非常有用。JMH是测量分配速率的错误工具吗?

9得票2回答
基准测试- CPU时间大于墙钟时间?

我在Linux上测量排序算法的CPU时间和墙钟时间。我使用getrusage来测量CPU时间,使用clock_gettime CLOCK_MONOTONIC获取墙钟时间。虽然我注意到CPU时间比墙钟时间长 - 这是正确的吗?我一直认为CPU时间必须小于墙钟时间。我的示例结果: 3.00018...

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

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

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

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

15得票1回答
惯用的性能评估方式?

我正在评估我的项目中的网络+渲染工作负载。 该程序持续运行一个主循环:while (true) { doSomething() drawSomething() doSomething2() sendSomething() } 主循环每秒运行超过60次。 我想看到性能...

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

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

10得票6回答
如何最小化分配和初始化NSDateFormatter的成本?

我注意到使用NSDateFormatter可能会很昂贵。我发现分配和初始化对象已经消耗了很多时间。 此外,似乎在多个线程中使用NSDateFormatter会增加成本。是否存在一个阻塞,使得线程必须等待彼此? 我创建了一个小的测试应用程序来说明这个问题。请查看它。 http://gith...

8得票5回答
简单的for()循环基准测试在任何循环范围内都需要相同的时间

我希望编写一个代码,让我的CPU执行一些操作并查看它所需的时间。我想循环i从0到i #include <iostream> #include <ctime> using namespace std; int main () { int start_s=clo...