问题标签 [microbenchmark]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
281 浏览

microbenchmark - 微基准测试需要运行多长时间?

首先,这与微基准测试的用处无关。我很清楚他们的目的:在一个非常具体的案例中指出性能特征和比较以突出一个方面。这是否应该对你的工作产生任何影响是另一回事。

几年前,有人(我认为是 Heinz Kabutz?)指出,每个值得花时间查看其结果的基准测试都必须运行至少几分钟并且需要运行至少 3 次,而第一次运行是总是被丢弃。这是为了解释 JVM 的预热以及环境中的不一致(后台进程、网络流量……)和测量不准确。这对我来说很有意义,我的个人经历也暗示了类似的事情,所以我总是采用这种策略。

但是,我注意到许多人(例如Jeff)编写的基准测试只运行几毫秒(!)并且只运行一次。我知道近年来短期基准测试的准确性有所提高,但我仍然觉得它很奇怪。不应该每个微基准测试至少运行一秒钟并运行至少 3 次以获得一些有用的输出吗?还是现在这条规则已经过时了?

0 投票
3 回答
28386 浏览

arrays - MATLAB的numel和length函数的区别

我知道length(x)返回max(size(x))numel(x)返回 x 的元素总数,但是对于 1 x n 数组,哪个更好?这是否重要,或者在这种情况下它们可以互换?

编辑:只是为了踢球:

替代文字

看起来它们在性能方面是相同的,直到你达到 100k 个元素。

0 投票
1 回答
1435 浏览

java - 使用 Caliper 时如何指定命令行?

我发现 Google 的微型基准测试项目 Caliper 非常有趣,但文档仍然(除了一些示例)完全不存在。

我有两种不同的情况需要影响 JVM 卡尺启动的命令行:

  1. 我需要设置一些固定的(最好在几个固定值之间交替)-D 参数
  2. 我需要指定一些固定(理想情况下在几个固定值之间交替)JVM 参数

我看到了一些关于添加此类功能的讨论,但我无法得出结论是否已添加它,在这种情况下,语法会变成什么?

一些示例或指向 Java 文档的指针(假设这完全记录在某处)等将非常感激!

0 投票
4 回答
402 浏览

java - Java 在这里对我的“等于”实现做了什么?

今天,我偶然发现了以下内容:

考虑两个类 NewClass 和 NewClass1,它们具有以下“等于”方法:

新类:

新类1:

我觉得奇怪的是 NewClass1 中的等号似乎比 NewClass 中的等号慢(对于 10.000.000 调用 14ms 对 3000ms)。起初,我以为这与“instanceof”检查有关,但如果我替换“return equals((NewClass1) obj);” 用“返回假;” 在 NewClass1 中,它突然运行或多或少同样快。我真的不明白这里发生了什么,因为在我看来,equals(Object) 中的 return 语句实际上不应该被调用。我在这里做错了什么?

以下是我的“基准代码”,以防我在那里犯了一些错误:

0 投票
6 回答
5777 浏览

multithreading - 如何最小化分配和初始化 NSDateFormatter 的成本?

我注意到使用 anNSDateFormatter可能非常昂贵。我发现分配和初始化对象已经消耗了很多时间。
此外,似乎NSDateFormatter在多个线程中使用 an 会增加成本。是否存在线程必须相互等待的阻塞?

我创建了一个小型测试应用程序来说明问题。请检查一下。

产生此类费用的原因是什么?如何提高使用率?


17.12。- 更新我的观察:我不明白为什么线程在并行处理时比串行运行时运行时间更长。只有在使用 NSDateFormatter 时才会出现时间差。

0 投票
2 回答
162 浏览

java - 微基准系统 Java

我正在按照页面上的“规则”用 Java 编写微基准。最后一条规则规定:

“减少测量中的噪音。在安静的机器上运行你的基准测试……”</p>

所以现在我想知道如何创建一个尽可能安静的系统。干净安装 Windows 7 并禁用不必要的服务是安静系统的一个很好的例子,还是有更好的选择?

0 投票
4 回答
2818 浏览

performance - 与斐波那契微基准测试中的 C 相比提高 Haskell 的性能

我遇到了这个问题,它比较了各种编译器以天真的方式计算斐波那契数的性能。

我尝试用 Haskell 来做这件事,看看它与 C 相比如何。

C代码:

结果:

哈斯克尔:

结果:

分析与

表明这fib需要 100% 的时间和分配,这不足为奇。我对堆进行了一些配置,但不知道它们意味着什么:

在此处输入图像描述

在此处输入图像描述

所以我的问题是:我能做些什么来让这个 Haskell 程序的性能更接近 C,或者这只是 GHC 在这个微基准测试中碰巧让它变慢的方式吗?(我不是在要求一种渐近更快的算法来计算 fibs。)

非常感谢。

[编辑]

事实证明,这ghc -O3ghc -O3 -fllvm -optlo-O3这种情况下要快。但optlo-block-placement对 LLVM 后端产生了明显的不同:

我想研究这个的原因是因为对于这个程序,C 和 OCaml 都比 Haskell 快得多。我有点不能接受,想了解更多,以确保我已经做了我能做的一切:D

0 投票
3 回答
1164 浏览

scala - 将 Scala 可变、不可变集合与 java.util.concurrent.* 集合进行比较的微基准测试

是否有任何已发布的微基准可以将 Scala 可变和不可变集合相互比较,以及java.util.concurrent在多线程环境中的集合?我对读者远远超过作者的情况特别感兴趣,比如在服务器端代码中缓存 HashMap。

Clojure 集合的微基准也是可以接受的,因为它们的算法类似于 Scala 2.8 持久性集合中使用的算法。

如果还没有完成,我会自己编写,但是编写好的微基准测试并非易事。

0 投票
5 回答
365 浏览

java - 爪哇。连接字符串。微基准

第一步,我运行此代码:

出:13579。

在第二步中,我运行此代码:

出:27328。

我有两个问题:

  1. 我可以说我的基准 - 正确吗?
  2. 为什么 (+) 和 concat() 之间的时间线差异如此之大???13.5 秒 VS 27 秒。为什么?
0 投票
11 回答
3267 浏览

python - 如何更简洁地找到缺失值?

以下代码检查xy是否为不同的值(变量xyz只能具有值abc),如果是,则设置z为第三个字符:

是否有可能以更简洁、更易读和更有效的方式做到这一点?