Show newer

@coded_artist @LukeAlmighty @SuperDicq
the conclusion from all of that is:

1. Instead of trying to be clever, try to write code in such a way that it's easy to understand what you're trying to do - chances are the compiler will be able to make sense of that and apply optimizations much better than you could by hand.

2. If in doubt, look at what instructions the compiler generates, eg. with godbolt: godbolt.org/z/oW88b77eW

@coded_artist @LukeAlmighty @SuperDicq

If you use arithmetic tricks to swap two values, anything that uses any of the two values in the future depends on those swap instructions, which in turn depend on both the instructions that calculated a, and the instructions that calculated b.

That may prevent CPU from doing things in parallel, or reordering instructions, which again, makes your code slow.

7/

@coded_artist @LukeAlmighty @SuperDicq

Branch misprediction is when it guesses incorrectly, and it costs a lot of time.

If a value used inside an if condition is known some time before the execution reaches the if, that might make branch prediction easier for a sufficiently smart CPU.

But when you obscure which value is which by using arithmetic to swap two variables, the CPU might not be able to see through that, resulting in frequent mispredictions, and making your code slow.

5/

@coded_artist @LukeAlmighty @SuperDicq
The SSA form is a type of internal representation of a program inside a compiler, in which instructions do not have a destination operand. Instead, every instruction creates a new variable with its result, and other instructions can use that as their source operands, but they cannot modify that variable

This means there are lots of temporary variables, so LLVM must be very good at optimizing them out.
Which means adding a temp var in your code is cheap
2/

Ukrainian military recruiter chases a guy down the road trying to capture him and send him the front.

Fortunately the dude is able to leap into a passing vehicle going the other way and escape.
Show older
Game Liberty Mastodon

Mainly gaming/nerd instance for people who value free speech. Everyone is welcome.