为什么在 Idris 中,`clockTime` 似乎不适用于基准测试?

狡猾的

可能有库可以做到这一点(尽管我还没有找到),我实际上正在寻找测量函数在 Idris 中运行所需的时间。我发现的方法是在函数运行之前和之后使用clockTimeSystem区分。这是一个示例代码:

module Main

import Data.String
import System

factorial : Integer -> Integer
factorial 0 = 1
factorial 1 = 1
factorial n = n * factorial (n - 1)

main : IO ()
main = do
    args <- getArgs

    case args of
        [self ] => putStrLn "Please enter a value"
        [_, ar] => do
            case parseInteger ar of
                Just a => do

                    t1 <- clockTime
                    let r = factorial a
                    t2 <- clockTime

                    let elapsed = (nanoseconds t2) - (nanoseconds t1)

                    putStrLn $ "fact(" ++ show a ++ ") = "
                                       ++ show r ++ " in "
                                       ++ (show elapsed) ++ " ns"

                Nothing => putStrLn "Not a valid number"

为了避免 Idris 通过评估阶乘来优化程序,我只是要求使用参数调用程序。

但是这段代码不起作用:无论我输入什么数字,例如10000,Idris 总是返回 0 纳秒,这让我很怀疑,即使只是分配一个 bigint 也需要时间。我用idris main.idr -o main.

我在我的代码中做错了什么?clockTime基准测试不是一个好的计划吗

迈克尔梅塞尔

Idris 1 不再维护。在 Idris 2 中,可以使用clockTime 。

clockTime : (typ : ClockType) -> IO (clockTimeReturnType typ)

可以在 Idris2 编译器中找到其用于基准测试的示例,请点击此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Java中的toString方法似乎不适用于数组

为什么Map在Groovy中不适用于GString?

为什么__dir __()不适用于python中的模块?

为什么我的代码似乎不适用于奇数

为什么守卫需要 Idris 中的 Ord 类型类?

为什么(* 3)`map`(+100)在Idris中不起作用?

为什么在 Idris 2 中没有 cong typecheck

为什么idris中的这两个元组相等?

为什么HTML中“ <input>”标记中的“ size”属性仅适用于TEXT而不适用于NUMBER?

为什么 R 中的多边形适用于全曲线而不适用于半曲线?

为什么VUE js中的function不适用于按钮组件,而适用于按钮html标签?

为什么flex-end不适用于列表中的最后一项?

为什么C ++中的“不完整类型错误”不适用于嵌套类

为什么 addClass 不适用于 Angular 中的 DOM 元素?

为什么CSS过滤器不适用于Chrome中的SVG元素?

为什么多态性不适用于C ++中的数组?

为什么文本 onTapGesture 不适用于 SwiftUI 中的加宽框架?

为什么样式不适用于princexml中的xml

为什么 Match("text", A:A) 函数不适用于 Excel 中的文本

为什么条件渲染不适用于vue.js中的表单输入

为什么 uglify 不适用于我在 gulp 中的 javascript 文件

为什么'declare'不适用于打字稿中的'extends'?

为什么@JsonProperty 不适用于 Kotlin 中的骆驼案例属性

为什么css不适用于Angular js中的表单

为什么Prop不适用于组件库vue js中的组件?

为什么我的设备不适用于android studio中的应用配置

为什么Scala中的模式匹配不适用于变量?

为什么PostgreSQL中的聚合函数不适用于布尔数据类型

为什么排序规则不适用于子查询中的xml路径?