小编JP *_*mau的帖子

具有后端特定运算符的持久性示例

我想在持久化中执行LIKE查询,我正在使用sqlite.yesod书给出了使用原始SQL来做的一个例子,但是说:

由于Persistent 0.6中添加了一个允许特定于后端的运算符的特性,您可以直接以正常语法表示LIKE运算符

但是我找不到一个例子.有人会举例说明使用像LIKE这样的特定运算符selectList或类似的东西是什么意思吗?

谢谢!

haskell yesod

11
推荐指数
1
解决办法
877
查看次数

优化创建过多垃圾的列表函数(不是堆栈溢出)

我有Haskell功能,这导致了我的程序的所有分配的50%以上,导致60%的运行时间被GC占用.我运行一个小堆栈(-K10K)所以没有堆栈溢出,但是我可以更快地使用更少的分配来实现此功能吗?

这里的目标是通过向量计算矩阵的乘积.我不能使用hmatrix例如因为这是使用ad自动微分包的更大功能的一部分,所以我需要使用列表Num.在运行时,我想使用Numeric.AD模块意味着我的类型必须是Scalar Double.

listMProd :: (Num a) => [a] -> [a] -> [a]
listMProd mdt vdt = go mdt vdt 0
  where
    go [] _  s = [s]
    go ls [] s = s : go ls vdt 0
    go (y:ys) (x:xs) ix = go ys xs (y*x+ix)
Run Code Online (Sandbox Code Playgroud)

基本上我们遍历矩阵,乘以并添加一个累加器,直到我们到达向量的末尾,存储结果,然后再继续重新启动向量.我有一个quickcheck测试验证我得到的结果与hmatrix中的矩阵/矢量产品相同.

我有试过foldl,foldr等没事我试着让函数更快(有些事情就像foldr原因的内存泄露).

使用性能分析运行告诉我,除了大部分时间和分配所花费的功能之外,还有一些Cells正在创建的负载,即Cells来自ad包的数据类型.

一个简单的测试运行:

import …
Run Code Online (Sandbox Code Playgroud)

performance garbage-collection haskell list automatic-differentiation

11
推荐指数
1
解决办法
161
查看次数

如何在工作区中的 Rust crates 之间共享测试代码?

我在一个工作区中有几个板条箱。一个 crate 定义了一个 Trait,其他人实现了它。我想编写一些测试函数,它们只采用 Trait 并确保所有不变量始终为真,并且示例代码适用于 Trait 的所有实例。所以我想定义一个测试套件,并且每个箱子都应该说“我将我的测试定义为这个测试套件,具有我自己的 Trait 实现”。那可能吗?

我想我可以在我的库中定义一个宏,它使用 Trait 实例生成所有测试,但这会在我的库中混合生产和测试代码。我工作区中的另一个 crate 可以引用我的主 crate 的 tests 文件夹中存在的测试模块吗?

所以基本上我有:

workspace
|-- crate1
    |-- src
        |-- lib.rs
    |-- tests
        |-- harness.rs
|-- crate2
    |-- src
        |-- lib.rs
    |-- tests
        |-- test2.rs
Run Code Online (Sandbox Code Playgroud)

我希望test2.rs能够使用harness.rs. 那可能吗?

testing rust

5
推荐指数
1
解决办法
200
查看次数