Dans les deux cas Java et C# c'est en gros la même technologie, c'est de la compilation "just in time".
Il y à des benchs sur le net, ici par exemple : http://reverseblade.blogspot.fr/2009/02/c-versus-c-versus-java-performance.html
C# semble être plus performant que Java sous windows, par contre sous linux Java est plus performant que le portage C# mono, et plus performant que d'autres technologies.
Donc globalement le plus rapide c'est C++ et de loin, ensuite C# sous windows est bien optimisé, et ensuite Java sur les autres plateformes s'en tire très bien.
Par exemple Java est beaucoup plus performant que Ruby, donc dire que Java est "lent" si on regarde les performances et que c'est portable c'est pas vraiment exact par rapport à d'autres technologie beaucoup plus "lente".
On peu comprendre que Microsoft à fait des efforts important pour optimiser sa plateforme dotnet sur une seule plateforme : windows et c'est bien normal. Java à de plus grosses contraintes que C# car il est porté sur de très nombreuses plateformes.
Bref une pour personne qui veux faire que du Windows, C# est une très bonne solution. Pour une personne qui veux faire du portable, il y à de nombreuses solutions, comme par exemple Java ou C++.