Hacker News new | ask | show | jobs
by credit_guy 1470 days ago
The performance benchmark is extremely underwhelming.

Multiplication of 2 400x400 matrices takes about 25 seconds, compared to more than 50 seconds for Python. But in Python everybody uses numpy to multiply matrices, and at this size the runtime is less than 1 millisecond on any recent CPU.

1 comments

Sure but using numpy is not really Python anymore - at that point you'd be comparing to C, not Python.

Anyway I think the benchmark is underwhelming for a different reason - Python is extremely slow so beating it surely isn't that Impressive?

I guess on the other hand... one guy has made a faster language than one made by an entire army of Python developers.

Eh, but Python isn't designed to be fast. In fact, you might say Python is designed to be slow (it's not, but that's a fun way to look at it) because it does so much. If you don't want to have the kind of runtime flexibility that Python has, then arguably you should have better performance to show for it - Python is planning on finding ~40% speed ups in the coming year.

That said, I don't know what the goals of this language are, and bluntly, perf isn't everything ;)

> That said, I don't know what the goals of this language are, and bluntly, perf isn't everything ;)

Since the most popular scripting language is Lua, I can name three big disadvantages of Lua that Umka is trying to fix:

- Verbose and unfamiliar syntax

- Type error detection at run time instead of compile time (a direct consequence of dynamic typing)

- Data structures not compatible with C (which is particularly odd, as Lua is specifically designed to interact with C)

So yes, Umka's main goals are not related to performance.

You can see it this way, or you can see it differently. Anyone who's doing matrix multiplication in Python uses numpy. Numpy is a standard library in Python, it's not a fancy thing that only a few specialized programmers use.

The creators of Umka chose their own benchmark to show people how good Umka is. It's the first thing you see when you open the github page. They could have chosen anything else, but they chose a matrix multiplication benchmark. Is matrix multiplication relevant for the Umka use case? I don't know, but if it is, the relevant comparison point is Python+Numpy, not Python alone. In which case rather than Umka being twice as fast, Umka is about 10000 slower.

Certainly, Python is slow. But I would say it's incorrect to compare Umka to C in terms of performance. Interpreted languages are always slower than compiled ones. The only way to close the gap is to use a JIT compiler, like LuaJIT for Lua. But such a compiler can never be portable.