Hi Stefano,I took the liberty of modifying your code to add enough work to make timing meaningful. http://pastebin.com/24tkRwGA If I am correct then what you just showed is a 107X speed improvement for the same algorithm. That is pretty impressive.
Ran on my laptop: elap allocate ffi 0sec elap fill ffi array 0sec elap sum the ffi arrray 0.484sec elap fill native table 0.015sec elap sum the lua arrray 51.887sec On 12/10/2014 11:50 AM, Stefano wrote:
On 10 Dec 2014 18:39, "Szabó Antal" <szabo.antal.92@xxxxxxxxx <mailto:szabo.antal.92@xxxxxxxxx>> wrote:>> 2014-12-10 19:15 GMT+01:00 Joseph Ellsworth <joexdobs@xxxxxxxxx <mailto:joexdobs@xxxxxxxxx>>:>>>> The sample / example would allocate the array, Fill it with a set of doubles read from a file, Run the sum and return both the sum and average value.> >> Here is a sample code for what I suppose you want: http://pastebin.com/cj7jShfj>> The summation loop looks like this in x64 assembly (use -jdump with luajit to get it):> > ->LOOP: > 7ffc8350ff80 addsd xmm7, [rax+rdi*8+0x8] > 7ffc8350ff86 add edi, +0x01 > 7ffc8350ff89 cmp edi, 0x270f > 7ffc8350ff8f jle 0x7ffc8350ff80 ->LOOP >> As far as I can tell, this is the shortest and fastest you can get without using vector instructions, which LuaJIT doesn't currently support.For something more end-user-friendly (for this project at least) than bare FFI the author might be interested in my the algebra module of an open source project I'm working on:http://scilua.org/sci_alg.html Stefano > > > Antal Szabó