My daily work for the last few weeks has been optimizing speedwise our pipeline.
Usually what we do is OpenMP (openmp.org) the code where it's possible (we deal with lots of DXT compression, mipmaps, normal map calucations, etc.)
Then where possible decrease the floating point accuracy to point where it's acceptable, and use SSE2 through some veclib.
It's all in C (C++) and the difference can be 1:10 and even more.
All I'm saying is this - you sit down, find your bottleneck and do something about it. But simply saying this is faster than this is pointless.
That to be said the language shootout is how it should be done - you have people using (trying at least) to use the same algorithms in different languages by allowing certain language (implementation) optimizations, or available libs.
Yes, I've seen LuaJIT, and LispWorks (which I love dearly) producing better code than C++, especially when comes to std::string put in stdext::hash_map<> simply because it's just harder to intern stuff in C++ (unless you do it manually). In Lua every string is interned, and in LispWorks (and in Common Lisp in general) as long as it's symbol it can be interned.
My daily work for the last few weeks has been optimizing speedwise our pipeline.
Usually what we do is OpenMP (openmp.org) the code where it's possible (we deal with lots of DXT compression, mipmaps, normal map calucations, etc.)
Then where possible decrease the floating point accuracy to point where it's acceptable, and use SSE2 through some veclib.
It's all in C (C++) and the difference can be 1:10 and even more.
All I'm saying is this - you sit down, find your bottleneck and do something about it. But simply saying this is faster than this is pointless.
That to be said the language shootout is how it should be done - you have people using (trying at least) to use the same algorithms in different languages by allowing certain language (implementation) optimizations, or available libs.
Yes, I've seen LuaJIT, and LispWorks (which I love dearly) producing better code than C++, especially when comes to std::string put in stdext::hash_map<> simply because it's just harder to intern stuff in C++ (unless you do it manually). In Lua every string is interned, and in LispWorks (and in Common Lisp in general) as long as it's symbol it can be interned.