LuaJIT高性能函数式编程库:Lua Fun

jopen 10年前

Lua Fun 是一个高性能函数式编程库,专为 LuaJIT tracing just-in-time compiler设计。 提供了想诸如标准ML,Haskell,Erlang,JavaScript,Python和Lisp等语言那样的50的编程原语。所提供的map, filter, reduce, zip高阶函数助你编写简单而高效的函数式代码。

示例:

> -- Functional style  > require "fun" ()  > -- calculate sum(x for x^2 in 1..n)  > n = 100  > print(reduce(operator.add, 0, map(function(x) return x^2 end, range(n))))  328350    > -- Object-oriented style  > local fun = require "fun"  > -- calculate sum(x for x^2 in 1..n)  > print(fun.range(n):map(function(x) return x^2 end):reduce(operator.add, 0))  328350

Lua Fun takes full advantage of the innovative tracing JIT compiler to achieve transcendental performance on nested functional expressions. Functional compositions and high-order functions can be translated into efficient machine code. Can you believe it? Just try to run the example above withluajit -jdumpand see what happens:

-- skip some initilization code --  ->LOOP:  0bcaffd0  movaps xmm5, xmm7  0bcaffd3  movaps xmm7, xmm1  0bcaffd6  addsd xmm7, xmm5  0bcaffda  ucomisd xmm7, xmm0  0bcaffde  jnb 0x0bca0024        ->5  0bcaffe4  movaps xmm5, xmm7  0bcaffe7  mulsd xmm5, xmm5  0bcaffeb  addsd xmm6, xmm5  0bcaffef  jmp 0x0bcaffd0        ->LOOP  ---- TRACE 1 stop -> loop


项目主页:http://www.open-open.com/lib/view/home/1426141272810