In what scenario can C code beat hand-written ASM code, assuming your ASM follows the logical line and don't executes loops for nothing? Never, you just live with it. For the most cases, the difference is non-significant, but to learn the platform-specific ASM might require a great deal of time, which is generally equal to profit. C abstracts the platform for you, which is the main benefit. It adds some overhead, but who cares? Script languages add even more overhead, but who cares? Use the one for prototyping, test, take it to C, test & profile, eventually take it over to ASM. It would be a waste of money, time, life to start coding something in ASM, unless I know it's gonna be a 256b/1/2/4k-demo. But even then I'll prototype my ideas.
Conclusion: we are all aware of the difference, but the languages exist for a reason. The compiler does a bad job? Yes, it's a well known fact, compilers use heuristics, hand-written assembler is much faster!
I believe asm is still quite much required to be able to fit actual content in 4096 bytes.
Depends on your idea and compiler.