FFI和时间之间是否有联系?

时间:2016-05-02 14:04:23

标签: haskell ghc

tl; dr :我的测试套件中出现错误,在解释或放慢时会出现错误。

所以我有一堆依赖Numeric.GSL.Fitting来完成繁重工作的函数和一个测试套件来执行这些功能。

当我尝试修复失败的测试用例时,我几乎无法保持理智,但是我的代码中找不到错误。

QuickCheck中取出失败的案例并检查结果显示出差异,但这对于嘈​​杂的拟合是可取的。

有一次,我只是试图在 ghci 中运行一个测试用例,并且发现,令我惊讶的是,所有100次迭代都通过了。难倒,我为其他失败的测试做了同样的事情,并发现他们在解释时都通过了。

凭借这些知识,我删除了任何我能想到的在编译代码中有所不同的内容(即-O0,删除了fast-math),但无济于事。

我注意到的第二件事是,当我traceShowId在每次迭代中拟合的结果时,测试实际上通过了。

这似乎暗示了一个问题,当它以不同的时间运行时消失(ghci较慢,跟踪减慢速度)。 Numeric.GSL.Fitting中的FFI调用是safe,因此这不应该是一个问题。

你的猜测和我的一样好......但有没有人知道这可能是什么原因?

0 个答案:

没有答案