我想比较jsPerf中两个PureScript函数的性能。
我需要做什么编译,需要在"setup"和每个代码段框中放入哪些部分?
使用psc或纸浆。
使用FFI
因为您所指的是JavaScript实用程序,所以用JS编写测试是最简单的。
您可以在一个单独的js
文件中编写性能测试(根据测试模块名称命名),并通过Foreign Function Interface从purescript调用它。
假设您想比较f
和g
函数的性能,代码方案可以由以下模板描述:
-- 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应该负责链接。请注意,这两个文件都需要具有匹配的名称,并放在同一目录中。