Hello,
I released marching-cubes2 today. It is similar to marching-cubes but the marching cubes algorithm is implemented in C and it is faster.
Here are some usage examples.
Hello,
I released marching-cubes2 today. It is similar to marching-cubes but the marching cubes algorithm is implemented in C and it is faster.
Here are some usage examples.
Why a second package and not a new version of the previous one?
I don’t think it serves well here. It isn’t just/even a matter of breakage. The first one is pure Haskell, the second one has C bits. Unless the API or output is different that could be a package flag.
It isn’t clear-cut as “the 2nd version is better, upgrade if you can”.
I wonder why the C version is faster. I can think of these reasons:
But only 2 could be insurmountable for Haskell.
Also, do you have a benchmark? I might try to translate your C implementation to low level Haskell.
@jaror I’m also wondering. Perhaps I don’t correctly use the bang patterns. The algorithm is the same, and it was not easy to implement in Haskell. That’s a reason for which I did another package instead of replacing the Haskell code with the C code, I don’t want to abandon the Haskell implementation (but I could have added the C implementation in the first package, I just didn’t think about that).
I don’t have benchmarks but you can try the Mandelbulb with each implementation and you will clearly see the C implementation is faster.
Not sure the memory management is better with the C implementation. When I did the animation of the toratope (ICN5D.hs, the strange tori with topology changing) with the C implementation, my laptop has crashed (it has 32 Go). I didn’t try with the Haskell implementation.