Computation kernels used for C++ and Java are the same, thus performance of computation intensive algorithms is comparable.
At the same time, there are kernels which performance is highly influenced by data layout and for ideal layout limited by memory bandwidth. An example of such algorithms is training of Multinomial Naïve Bayes. In those cases C++ and Java performance may differ significantly and the main factor will be particular memory layout.
We provide performance considerations on algorithm-by-algorithm basis in programming guide.
General recommendation is using provided DataSources where applicable to achieve optimal performance.