我对此很好奇。
我想检查哪个功能更快,所以我创建了一些代码,执行了很多次。
public static void main(String[] args) {
long ts;
String c = "sgfrt34tdfg34";
ts = System.currentTimeMillis();
for (int k = 0; k < 10000000; k++) {
c.getBytes();
}
System.out.println("t1->" + (System.currentTimeMillis() - ts));
ts = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
Bytes.toBytes(c);
}
System.out.println("t2->" + (System.currentTimeMillis() - ts));
}
“第二个”循环更快,因此,我认为hadoop的Bytes类比String类的函数更快。然后,我更改了循环顺序,然后c.getBytes()变得更快。我执行了很多次,结论是,我不知道为什么,但是在执行第一个代码后,我的VM中发生了一些事情,因此第二个循环的结果变得更快。
这是经典的Java基准测试问题。Hotspot / JIT / etc将在您使用代码时对其进行编译,因此在运行期间它会变得更快。
首先至少在循环中运行3000次(在服务器或64位上为10000)-然后进行测量。
我的最终目标是使用标准Java集合作为基准,为几个Java基本集合库创建一套全面的基准。在过去,我曾使用循环方法编写这类微基准测试。我将我正在进行基准测试的函数放在一个循环中,并迭代100万次,这样jit就有机会预热。我取循环的总时间,然后除以迭代次数,得到一个对我正在进行基准测试的函数的单个调用所需时间的估计值。在最近阅读了JMH项目,特别是这个例子:JMHSample_11_循环之后,我看到了
问题内容: 我听说过使用过这个术语,但是我不确定它的含义,因此: 它是什么意思,不是什么意思? 什么是IS和IS N’T微基准测试的一些示例? 微基准测试有哪些危险,如何避免? (或者这是好事吗?) 问题答案: 它的含义与锡罐上所说的完全一样-它正在衡量“小”东西的性能,例如对操作系统内核的系统调用。 危险在于人们可能会使用从微基准测试中获得的任何结果来指示优化。众所周知: 我们应该忘掉效率低下的
我从同事那里听说C比Java快,在寻找最佳性能时,尤其是对于金融应用程序,这是要走的路。但我的观察有点不同。有人能指出我实验的失败之处,或者在讨论中添加一些科学变量吗? 注意 1:我正在使用 -O3(最大优化)和 -O2 与 C 编译器。 注2:每种语言的简短完整的源代码都包括在内。随意在自己的机器上运行,做出改变,得出结论,分享。 注3:如果您将两个源代码并排放在编辑器中,您将看到它们的实现是等
问题内容: 我已经编写了一个小型Java应用程序,我需要为其获取性能指标,例如内存使用率,运行时间等。有没有简单易用的性能衡量工具? 问题答案: Yourkit非常好(30天免费试用)。Eclipse还内置了TPTP工具。
11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循
GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m