É quase certo que sempre você conseguirá obter um resultado melhor em C++ do que em Java ou C#, aina mais no estado que eles estão hoje que ainda tem muito potencial para melhor (até C++ ainda tem) nas otimizações. Mas o trabalho será cada vez maior para conseguir.
O trabalho demorou menos de um dia. O código está todo disponível no GitHub. Qualquer um pode baixar e rodar na sua máquina. Fazer os seus testes. Tirar as suas próprias conclusões. Refutar ou aceitar os resultados obtidos, com argumentos e provas técnicas.
Ou seja, seria legal matar a cobra e mostrar o pau, caso contrário estamos apenas tendo uma conversa de bar :) Ou seja, afirmar que C++ é mais rápido e pronto, e o que aconteceu aí foi uma quebra das leis da física ou um evento paranormal não vai ajudar na pesquisa nem no aprendizado :) Pode ter sido um erro/imprecisão do benchmarking? Pode. E estamos atrás desse erro ou dessa imprecisão. Assim como estamos atrás dos alienígenas. Brincadeiras a parte, nós fizemos os testes e colocamos eles disponíveis. Se uma IntMap em C++ pode ser mais rápida que uma IntMap em Java, então gostaríamos de ver isso na prática e não na teoria.
Há poucos dias atrás houve um tópico parecido que viralizou. O nosso amigo Pedro Pessoa, que é um cara muito inteligente, fez um video excelente sobre isso aqui => https://www.youtube.com/watch?v=YI0k6bGRuzk
Gostaria sinceramente de entender o porquê desse código em C++ ser mais lento que o mesmo código em Java. Seria JIT melhor que AOT em muitos casos como esse? Ou dá para fazer alguma coisa no compilador de C++ para otimizar esse código?
Tem um discussão rolando em outro forum onde levantaram a questão de como o C++ está alocando a memória no heap. E que ele não faz isso de uma maneira tão eficiente quanto a JVM. Eu realmente ficaria surpreso caso não houvesse uma maneira de fazer esse código simples de C++ performar no mesmo nível que o código Java. Até porque no final, tudo vai para assembly.