在jsPerf中测试purescript函数



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

我需要做什么编译,需要在"setup"和每个代码段框中放入哪些部分?

使用psc或纸浆。

使用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,这些回调的性能应该进行测量和比较。请注意,由于PureScript不像Haskell那样懒惰,因此需要传递未求值的lambda以推迟计算。PureScript应该负责链接。请注意,这两个文件都需要具有匹配的名称,并放在同一目录中。

相关内容

  • 没有找到相关文章

最新更新