gpt4 book ai didi

performance - 强制预计算一个常数

转载 作者:行者123 更新时间:2023-12-03 23:46:43 25 4
gpt4 key购买 nike

我在 Haskell 中有一个常量声明——我可以强制它提前进行评估吗?我看到一些看起来大致像这样的代码,

myList = [(a, b), (c, d)]
...
map (f . fst) myList

花时间在 fst当我分析它时调用(它确实有 168M 调用)。 myList 的二进制表示非常小,例如,可以复制到全局内存中[如果这是一个 C 程序]。我正在编译 -O3 -optc-O3当然。

非常感谢!

为自定义类型生成 Lift 实例

lift 的任何表达式调用 sclv 的答案必须是 Lift 的一个实例。有一个名为 th-lift 的库这将为自定义数据类型生成 Lift 实例。查看该包裹的 documentation .

最佳答案

使用 Template Haskell 生成编译时常量:

{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH.Syntax(Lift(..))

test = $(lift $ (map (*20) [0..100] :: [Int]))
lift取一个 Haskell 值并将其提升为 TH Exp。 $()运行封闭的报价,并在编译时将生成的 exp 拼接到代码中。

关于performance - 强制预计算一个常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com