C vs. C#: racing VLC's Gaussian blur

68 points16 comments3 days ago
theanonymousone

> Two small edits close most of it: compute the loop bounds into locals before the loop,

I always assumed any decent runtime/compiler takes care of such optimisations, and usually leave such things to JDK in my Java code. Is that really not the case?

teo_zero

Nice article!

What surprises me is that the original VLC filter does not use SIMD. Sometimes I wonder why I spent my money on a "modern" CPU with a lot of new features that stay completely ignored by most software I run every day.

show comments
brookman64k

I would have expected the filters to run as a shader on the GPU which would make them much more efficient. I remember implementing two-pass gaussian blur in GLSL almost 20 years ago.

show comments
hn_submit

The C# version uses unsafe raw pointers which is practically the same as writing it in C. No surprise then that the outcomes are similar.

anderskaseorg

There are much faster algorithms available for Gaussian blur though, running in O(n) rather than O(nσ) for an n pixel image and radius σ. See https://www.ipol.im/pub/art/2013/87/article.pdf for a survey.

show comments
maxlin

Very interesting readup! I have some C# projects I've had in mind to try to compile to AOT. Quite different for complex programs of course, but the perf being very close to C is a great motivator.

show comments
Brian_K_White

Most industries consider 8% a mountain. More than their entire profit margin.

show comments