C and most importantly its std lib never really cared about performance, it's just a low-level language with low-level features. If we look at how it manages strings(strlen, strcat etc. hardly better than immutable strings), memory(cost of many mallocs(poorly managed blocks) and how free works) it becomes clear that it just wants to minimize memory usage(forcing the programmer to track meta information manually) and doesn't care about wasting cpu cycles. Most of C's "speed" comes from using arrays for everything and using the stack more than in managed languages.
While some high-level languages might have a hard time competing with C because of the cost of their abstractions, it's not like C has a lot of advantages with real-world code. With simple programs(benchmarks) we can easily reason about performance but in production code it quickly becomes too hard to do the right thing.
