04-08-2014, 11:54 PM
I hope xoft gets why I keep going on about vectorization now.
Random Chitchat 2012-2016
|
04-08-2014, 11:54 PM
I hope xoft gets why I keep going on about vectorization now.
04-09-2014, 01:05 AM
I get one important message from the presentation: All CPUs are different and if you want a binary that performs well on all of them, do NOT use the advanced stuff Instead, make it optimized enough for ALL CPUs.
The problem with C++ is that regular users expect to download and run binaries, so you need to compile the code, and you have no idea what the destination machine is - whether it's a top-of-the-line haswell-based server, or some old dusty P3 someone uses to run as a server in their attic. Open-source is better in this way, since it allows you to compile for your exact machine, but then, very few people can actually do that.
04-09-2014, 01:10 AM
(04-09-2014, 01:05 AM)xoft Wrote: I get one important message from the presentation: All CPUs are different and if you want a binary that performs well on all of them, do NOT use the advanced stuff Instead, make it optimized enough for ALL CPUs. I would compile it on my machine, but i have no idea how i can do it (Win7 Ulti x64)
Well we might want to change from our current default for the 32 bit version. I doubt anyone has got an 80386 with enough RAM to run MCServer.
@xoft I don't get that message. What I get is All CPUs are different and if you want a binary that performs OK on all of them, do NOT use the advanced stuff instead, make it optimized enough for all CPUs. After all if you don't use vectors you can only use half a modern CPU's capabilities. However if you want to make maximum use of them, you should write c++ in such a way that the compiler can optimize it and there aren't any hidden constraints. And use a modern compiler that knows all the pitfalls .
04-09-2014, 04:12 AM
@L01ZB: The instructions are in the repo: https://github.com/mc-server/MCServer/bl...MPILING.md and possibly in the other .md files
If you have trouble following them, give us a heads-up, we can fix it - but only if we know there's something wrong with it. @worktycho: That's more or less what I'm saying - the CPUs are different, so there's no point in super-optimizing for a single CPU. We need to write code that compiles well onto all architectures. However, the problem is the binaries - those are already compiled with no chance of getting optimized for the specific chip they're being run on.
04-09-2014, 04:19 AM
But what Tycho is saying is that even though you shouldn't optimise for the latest CPU, you should tell your compiler that the minimum supported chip is a Pentium 4 rather than an 80386... Nobody really has pentium 3s, and if they did they should compile it themselves.
04-09-2014, 05:58 AM
And using a pentium 4 as a default we can then use SSE2 for the fpu. SSE2 for fpu is far better.
04-09-2014, 05:42 PM
I'd like to direct your attention towards this Build presentation by Herb Sutter. The entire thing is valuable, but if you're short on time, watch at least from 23:30:
http://channel9.msdn.com/Events/Build/2014/2-661 To sum it up, it shows why we keep moving away from std::list towards std::vector and thus gain performance
04-09-2014, 09:29 PM
Only reason to use std::list is if you need to remove things in the middle without invalidating iterators. Not many other collections can do that.
I spent several lessons arguing with my computing teacher on exactly that point. My current syllabus teaches that the only disadvantage to linked list is O(N) traversal. And since they don't mention the idea of std::vector type things, its basically saying linked lists are the better most of the time.
|
« Next Oldest | Next Newest »
|