我想比较jsPerf中两个 PureScript 函数的性能。
我需要进行哪些编译以及需要将哪些部分放入“设置”和每个片段框?
使用 psc 或纸浆。
因为您指的是 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,它们的性能应该被测量和比较。请注意,您需要传递未计算的 lambda 以延迟计算,因为 PureScript 不像 Haskell 那样惰性。PureScript 应该负责链接。请注意,这两个文件需要具有匹配的名称并放在同一目录中。