在jsPerf中测试purescript函数

时间:2016-01-12 13:08:07

标签: purescript jsperf

我想比较jsPerf中两个PureScript函数的性能。

我需要做什么编译以及我需要在“设置”和每个代码段框中添加哪些部分?

使用psc或纸浆。

1 个答案:

答案 0 :(得分:0)

使用 FFI

因为您指的是 JavaScript 实用程序,所以用 JS 编写测试将是最简单的。

您可以在单独的 js 文件(根据您的测试模块名称命名)中编写性能测试,并通过 Foreign Function Interface 从 purescript 调用它。

假设您想比较 fg 函数的性能,可以通过以下模板描述代码方案:

-- File PerfTest.purs
module PerfTest where

f :: Args -> Result
f args = ...

g :: Args -> Result
g args = ...

foreign import performanceTestImpl 
  :: forall a. (Unit -> a) -> (Unit -> a) -> Unit

main :: Effect Unit
main =
  pure $ performanceTestImpl (\_ -> f args) (\_ -> g args)
// File PerfTest.js
"use static";

exports.performanceTestImpl =
  function(runF) {
    return function(runG) {
      // run jsPerf tests as you would normally do
    };
  };

这会将 performanceTestImpl 实现委托给带有两个回调的 JavaScript,这两个回调的性能应该被测量和比较。请注意,您需要传递未计算的 lambda 以推迟计算,因为 PureScript 不像 Haskell 那样懒惰。 PureScript 应该负责链接。请注意,这两个文件需要具有匹配的名称并放在同一目录中。