On Wed, 22 Dec 2010 17:04:21 -0500 Andreas Mayer <[email protected]> wrote:
> To see what performance advantage D would give me over using a scripting > language, I made a small benchmark. It consists of this code: > > > auto L = iota(0.0, 10000000.0); > > auto L2 = map!"a / 2"(L); > > auto L3 = map!"a + 2"(L2); > > auto V = reduce!"a + b"(L3); > > It runs in 281 ms on my computer. > > The same code in Lua (using LuaJIT) runs in 23 ms. > > That's about 10 times faster. I would have expected D to be faster. Did I do > something wrong? > > The first Lua version uses a simplified design. I thought maybe that is > unfair to ranges, which are more complicated. You could argue ranges have > more features and do more work. To make it fair, I made a second Lua version > of the above benchmark that emulates ranges. It is still 29 ms fast. > > The full D version is here: http://pastebin.com/R5AGHyPx > The Lua version: http://pastebin.com/Sa7rp6uz > Lua version that emulates ranges: http://pastebin.com/eAKMSWyr > > Could someone help me solving this mystery? > > Or is D, unlike I thought, not suitable for high performance computing? What > should I do? Dunno why D seems slow. But Lua is a very fast dynamic language, very simple & rather low level (both on language & implementation sides). Benchmark trials in Lua often run much faster than python or ruby equivalents (often 10 X). Depending on the domain, LuaJIT often adds a speed factor of an order of magnitude. This alltogether brings comparable performance to some compiled languages using high-level features such as virtual funcs, GC,... higher-order funcs, ranges ;-) denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com
