4

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

我需要进行哪些编译以及需要将哪些部分放入“设置”和每个片段框?

使用 psc 或纸浆。

4

1 回答 1

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 应该负责链接。请注意,这两个文件需要具有匹配的名称并放在同一目录中。

于 2021-01-13T10:22:44.597 回答