5 ms·
What does this even mean? Going back to hand-unrolling loops in assembler when writing business applications? The very smart people working on the layers this
by brandonmenc 11y ago
What does this even mean? Going back to hand-unrolling loops in assembler when writing business applications?
The very smart people working on the layers this manifesto bemoans already do that for us.
- bontaq 11y agoI was thinking the same thing when I finished. What, how deep should I dig? What level is it 'handmade' enough?
- mynegation 11y agoI can relate. I remember working with Turbo/Borland Pascal on 80286. To this day it seems to me as faster than any C++ compiler I am using today on core i7. Granted, it is apples and oranges, but the difference in frequency alone is freaking 500x. The reason is TP was deliberately _designed_ to run as fast as possible: simple language to parse, monolithic single pass compiler, compilation to memory, cleverly designed file format. We became complacent and rarely anyone does that kind of architecting with ruthless focus on speed and simplicity.
- sliverstorm 11y agoHe talks about abstraction layers, yes- although he's probably not arguing for assembly as much as fewer stacks on services on stacks on... But it seems like the main theme is programming to the actual machine rather than the "frictionless vacuum" target machine that is oh-so-easy to assume. Like one of my favorite presentations, where a PS3 developer team details how simple choices in data structure arrangement got them orders of magnitude speedup because of how different arrangements interplay with the CPU caches. In OoO languages, it's easy to make a pathological cache virus.
- renox 11y agoLet me guess: SoA instead of AoS? That's a classic optimisation, there's even an annotation for this in 'Jay' (well there will be when it will exist https://www.youtube.com/user/jblow888 https://www.youtube.com/user/jblow888)
- sliverstorm 11y agoYes, that, but they also go beyond that. I found it today: http://harmful.cat-v.org/software/OO_programming/_pdf/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf http://harmful.cat-v.org/software/OO_programming/_pdf/Pitfal...
- Narishma 11y agohttps://www.youtube.com/watch?v=rX0ItVEVjHc https://www.youtube.com/watch?v=rX0ItVEVjHc This one?
- sliverstorm 11y agoFound it: http://harmful.cat-v.org/software/OO_programming/_pdf/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf http://harmful.cat-v.org/software/OO_programming/_pdf/Pitfal...
- BazHK 11y agoThe 'Handmade' part of this is (knowing the author) a reference to Casey Muratori's Handmade Hero [1], where he builds a game 'from scratch'. The game is written in C++, using nothing but the base OS libs (in his case, Win32), minimal reliance on the CRT, etc. I'd guess they're talking about building programs with a level of care comparable to that project, meaning high performance memory allocation, no interpreted languages, high priority on fast execution and compile times, etc. [1] https://handmadehero.org/ https://handmadehero.org/
- carlosrg 11y ago> Casey Muratori's Handmade Hero Didn't hear about that, very nice! I'm starting a little 3D game engine from scratch in C++ and OpenGL, just for fun. I'm sure I'm going to learn a lot watching these videos.
- reacweb 11y agoI undersand why unrolling loops is faster with current hardware, but does it ought to be so ? Maybe we are putting a lot of complexity in software to cope with limitations of hardware that could not exist anymore in a couple of generations (of hardware).
- pjc50 11y agoHardware innovation in this area is, if anything, slowing down. Fundamentally we have to acknowledge that a computer is itself a distributed system and that every action that crosses a bus or disrupts a pipeline incurs a latency penalty.