"In this tiny ebook I'm going to show you how to get started writing 6502 assembly language. [...] I think it's valuable to have an understanding of assembly language. Assembly language is the lowest level of abstraction in computers - the point at which the code is still readable. Assembly language translates directly to the bytes that are executed by your computer's processor. If you understand how it works, you've basically become a computer magician." More of this, please.

Yea, GCC often produces subpar code in my experience. Depending on how tight a loop needs to be, hand-crafted assembly can bring decent gains. Sometimes we can get away swapping in intrinsics, other times GCC just refuses to output good code.

It needs to be said that coding in asm does not have automatic benefits of any kind. The quality of asm depends on the knowledge and capability of the person programming it. I've seen plenty of terrible asm. There _can be_ benefits to asm, but it isn't a given and shouldn't be overstated.

It's all relative though, computers have gotten so fast we're usually waiting on I/O anyway.