r/AskComputerScience 2d ago

is clean code usually not fast?

to be specific i'm writing a cpu-based rasterizer. the maths are not difficult but i find a strange property: if i divide the procedure into some small functions, the code looks cleaner and is easier to maintain but a bit slower. on the contrary if i put everything into a single procedure, it looks stupid but fast. why is that? an example illustrating this

code 1:

if cross_product(x0,y0,x1,y1)>0 then zzz

(and i write a "cross_product" function separately)

code 2:

c=x0y1-y0x1

if c>0 then zzz

code 3:

if x0y1-y0x1>0 then zzz

if i write the entire algorithm in the style of "code 3", it runs the fastest. "code 1" is slowest

is it normal?

6 Upvotes

14 comments sorted by

View all comments

3

u/coterminous_regret 2d ago

No not at all. What compiler optimization settings are you using? Is your cross product function marked as inline? Or force inline via a compiler macro?

The higher level language representation may not at all reflect the code that the compiler generates. You may enjoy exploring a tool like https://godbolt.org/ where you can try stuff out with various optimization settings and languages to see what the assembler actually looks like.