Optimization 循环和递归展开

Optimization 循环和递归展开,optimization,haskell,ghc,template-haskell,Optimization,Haskell,Ghc,Template Haskell,我还想展开这个循环以避免递归函数调用(我认为ghc不会执行这种优化) 所以,在我写这篇文章之前,我想问一下是否有更好的方法。只是说优化在这里非常关键。这是“标准”的方法。我认为没有其他方法,所以我会接受这个答案。 W_t = M_t[i] if 0 <= t <= 15 W_t = ROTL_1(W_(t-3) XOR W_(t-8) XOR W_(t-14) XOR W_(t-16)) if 16 <= t <= 79 For t=0 to 79: { T =

我还想展开这个循环以避免递归函数调用(我认为ghc不会执行这种优化)


所以,在我写这篇文章之前,我想问一下是否有更好的方法。只是说优化在这里非常关键。

这是“标准”的方法。

我认为没有其他方法,所以我会接受这个答案。
W_t = M_t[i] if 0 <= t <= 15
W_t = ROTL_1(W_(t-3) XOR W_(t-8) XOR W_(t-14) XOR W_(t-16)) if 16 <= t <= 79
For t=0 to 79:
{
    T = ROTL_5(a) + f_t(b, c, d ) + e + K_t + W_t
    e = d
    d = c
    c = ROTL_30(b)
    b = a
    a = T
}