В таких случаях я всегда вспоминаю цитату из рекламы "просто ты не умеешь их готовить"
Природу не обманешь. И для Java и для C++ все выливается в native-код, который выполняется одинаково. И, например, начиная в С++ с прямой работой с буферами (якобы для ускорения) человек приходит к "умным указателям", собственным аллокаторами, а в хорошем случае к библиотекам (boost, stl).
В итоге код на С++ помимо чистой функциональности, заложенной программистом, обрастает выполнением дополнительных операций стандартных библиотек. Таким образом код С++ становится не таким уж быстрым, как казалось сначала.
И еще мысль. В большинстве случаев тенденция такова, что важнее, чтобы код
создавался быстрее, а не
выполнялся. "Узкие", особые места оптимизируются по алгоритму предложенному
xandox выше в ответах.