问题标签 [criterion]

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 回答
1075 浏览

c - 如何可靠地比较 Haskell 和 C 的运行时?

我使用 Criterion 库为我的 Haskell 函数编写基准测试。现在我在 C 中实现相同的算法来比较 Haskell 的性能。问题是我怎样才能可靠地做到这一点?Criterion 做了很多花哨的事情,比如计算时钟调用开销和对结果进行统计分析。我想如果我只是测量我的 C 函数所需的时间,它将无法与 Criterion 返回的结果相提并论。在他关于 Criterion 的原始帖子中, Bryan O'Sullivan 写道:“甚至应该很容易使用标准来对 C 代码和命令行程序进行基准测试。” 问题是如何?Takayuki Muranushi比较 DFT 的 C 实现使用 Haskell 通过生成线程并调用可执行文件,但我担心这会增加很多额外的开销(创建新线程,运行应用程序,输出到 stdio,然后从中读取),这使得结果无法比较。我也考虑过使用 FFI,但我再次担心额外的开销会使这种比较不公平。

如果无法使用 Criterion 可靠地对 C 进行基准测试,那么您会推荐哪些 C 基准测试方法?我在这里阅读了一些关于 SO 的问题,似乎有许多不同的函数可以测量系统时间,但它们要么以毫秒为单位提供时间,要么具有很大的调用开销。

0 投票
1 回答
335 浏览

scala - Scala 标准等效

是否有等效于标准的Scala(或Java,我猜) ?我不只是在谈论基准测试库:查看 HTML 结果的标准。

0 投票
1 回答
249 浏览

performance - 水库采样与获取列表长度并选择随机元素的性能

我编写了两个函数来从未知长度的列表中选择一个随机元素。第一个使用水库采样(水库大小为 1),第二个获取列表的长度以选择一个随机索引并返回它。出于某种原因,前者要快得多。

第一个函数使用单次遍历并以概率 (1/i) 选取每个元素,其中 i 是列表中元素的索引。它导致选择每个元素的概率相等。

第二个版本遍历列表一次以获得它的长度,然后选择一个介于 0 和输入列表长度 (-1) 之间的索引来获得元素之一,再次以相等的概率。列表1.5的预期遍历次数:

这是我用于对这两个函数进行基准测试的代码:

这是一个剥离的输出:

换句话说,第一个函数比第二个函数快大约 200 倍。我预计运行时间主要受随机数生成和列表遍历次数(1 vs. 1.5)的影响。还有什么其他因素可以解释如此巨大的差异?

0 投票
1 回答
633 浏览

performance - GHC 中的跨模块优化

如果我在同一个模块中测量它,我有一个非递归函数来计算似乎表现良好的最长公共子序列(用标志ghc 7.6.1编译)。另一方面,如果我将函数转换为模块,仅导出该函数(如此处推荐),然后使用 Criterion 再次测量,我会得到约 2 倍的减速(如果我将标准测试移回模块,它就会消失其中定义了函数)。我尝试用pragma 标记函数,这对跨模块性能测量没有任何影响。-O2 -fllvmCriterionINLINE

在我看来,GHC 可能会进行严格性分析,当函数和主函数(从该函数可以访问)在同一个模块中时效果很好,但当它们被拆分时则不行。我会很感激有关如何模块化函数的指针,以便在从其他模块调用时它可以很好地执行。有问题的代码太大,无法粘贴到此处 -如果您想尝试一下,可以在此处查看。下面是我正在尝试做的一个小例子(带有代码片段):

0 投票
1 回答
315 浏览

haskell - 对不同大小的输入运行 Haskell 基准测试

我经常想比较同一函数的多个实现的运行时性能。对于个人输入,标准是一个很好的工具。

但是有什么简单的方法可以在不同的输入大小上绘制代码的性能,例如查看算法的复杂性?

理想情况下,我向库传递 type 的值Benchmarkable r => [(String, Int -> r)],即与大小相关的基准的列表,库将自动为每个值找到合理的输入范围,并从中创建一个漂亮的图。

0 投票
1 回答
18300 浏览

hibernate - org.hibernate.QueryException - 无法解析属性

我正在尝试使用 Hibernate 连接到数据库。

此当前表格具有以下布局:

其中field1、field2、field3都是外键,共同组成一个复合键。

我有以下课程:

这伴随着它:

我收到以下错误:

org.hibernate.QueryException - 无法解析属性:field3 of:org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)的 path.MainRecord

这是我的博/道代码

0 投票
2 回答
349 浏览

haskell - 在标准中初始化基准并从结果中排除初始化时间

我需要对里面的一些代码进行基准测试IO,标准很好地支持了这一点。但我想执行一些初始化步骤(每个基准测试都不同)。天真的方法:

但它会为每次基准测试运行(默认为 100 次)执行初始化和清理,并包括初始化时间到最终结果。是否可以排除初始化时间?

补充:代码使用全局状态(实际上是mongodb),所以我不能同时准备两个初始状态。

0 投票
1 回答
148 浏览

haskell - 可以使用标准来分析跨多个内核的并发性吗?

我注意到,当我运行一个标准基准(不执行forkIOor par)编译时-O2 -rtsopts -threaded -eventlog+RTS -N2 -ls实际工作(不仅仅是 GC)分布在两个核心上。标准来源的快速 grep 没有显示并行性的来源。

我想做一些仔细的基准测试,例如在两个线程之间对 MVar 进行有争议的更新;我可以用标准准确地做到这一点(例如,如果所有的并行性都发生在测试之间)?

0 投票
2 回答
283 浏览

haskell - 以不同数量级的时间绘制标准基准

我有一个 Criterion 基准,每个基准bgroup对应于一个测试,并且在每个基准中bgroup有两个bench具有不同选项的测试值。例如:

在每一项中bgroup,这两个bench测试都是可比的。但是,test1需要 2000 微秒,而test2需要 45 微秒。概览图(对我想做的事情最有用)在同一轴上显示不同的测试,因此我可以清楚地看到 中的差异test1,但test2很难看到。

是否可以对每个进行标准化bgroup以进行绘图?或者在不同的轴上显示它们?或者我应该转储 CSV 数据并自己绘制我想要的东西?

0 投票
3 回答
2374 浏览

java - Hibernate org.hibernate.criterion.Example.create OR 子句

我正在使用org.hibernate.criterion.Example.create从我的 Entity 对象创建查询。一切都很好,但是使用这种方法只能在限制之间使用 AND 子句创建 SQL。

是否可以使用org.hibernate.criterion.Example.create但带有 OR 子句?