[fpc-devel] Question on updating FPC packages
J. Gareth Moreton
gareth at moreton-family.com
Tue Oct 29 15:27:58 CET 2019
Oh, I just noticed you're replying to messages from a few days ago. Oops!
There is no right way of going about optimisation. I'm of the school
that if you can give the compiler a helpful hint, without complicating
the code, then do it.
In one way I compare it to the id Tech (Quake) and Unreal engines back
in the 90s and early 2000s. When making maps, the id Tech engines
attempted to compile everything itself when it came to determining what
was visible and what it should cull - as a result, the compilation
process would take a long time and there were some situations where it
could easily fall apart due to rounding errors or just some glitch in
the tree. The Unreal engine, on the other hand, had /you/, the map
designer, decide what was visible and what wasn't, and had you decide
where to place portals and other hints to the engine. This was useful
because it was much easier to subdivide areas if you were sensible about
it and hence the Unreal engine could handle much more complex outdoor
scenes, for example. The cost though, especially with later versions of
the Unreal engine that added more features, is that it was very hard for
a novice to get started - for example, the 'terrain' feature didn't do
any automatic visibility culling, so if you had a large hill, for
example, you would have to insert an 'anti-portal' underneath it to give
a hint to the engine that if it is within the viewport, any polygons
behind it is invisible (which causes very weird artefacts if you place
one in the middle of an open room).
I like to take a middle ground, especially as the Pascal compiler has a
reputation of being fast. A smart compiler is a good compiler, but
expecting it to be able to know which procedures should be
auto-vectorised, especially with old source code and no rules on memory
alignment, it's either impossible or will take a disproportinately long
time. Other times it's an excuse for lazy programming!
As for the vectorcall tests, they should vectorise the entire argument
on both x86_64-win64 and x86_64-linux. If not, there's a bug
somewhere. I'll have a look.
Gareth aka. Kit
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20191029/14f974e8/attachment.html>
More information about the fpc-devel
mailing list