Производительность Java Runtime Vs против собственного кода C / C ++?

Я стал все более и более комфортно программировать на Java, чем на C ++ или C. Я надеюсь получить представление о снижении производительности при использовании интерпретатора JVM, вместо того, чтобы выполнять тот же «проект» изначально. Я понимаю, что здесь есть некоторый уровень субъективности; качество программы будет во многом зависеть от хорошей реализации. Меня интересуют следующие аспекты в общем смысле:

Должен быть некоторый базовый уровень для накладных расходов при использовании переводчика. Есть ли какое-то общее правило, которое нужно запомнить? 10% 15%? (Я вытащил эти цифры из чистого воздуха) Я прочитал случайный блог, в котором говорится, что Java-код почти такой же быстрый, как и нативный код, но я думаю, что это могло быть предвзятым.

Добавляет ли сборщик мусора JVM существенные издержки к производительности во время выполнения? Я знаю, что приложения Какао начали использовать модель сбора мусора, и я согласен, что это делает программирование намного проще, но какой ценой?

Каковы затраты на выполнение системных вызовов из Java? Например, создание объекта Socket в отличие от API сокета C.

Наконец, я вспоминаю, что где-то читал, что реализация JVM является однопоточной. Если это правда (о чем я скептически отношусь), значит ли это, что потоки Java на самом деле не являются настоящими потоками? Соответствует ли поток Java общему потоку, предоставляемому ядром? Выигрывает ли Java-приложение таким же образом, как нативное приложение от нескольких ядер / нескольких процессоров?

Любой совет от разработчика, который разбирается в тонкостях производительности JVM и java-программ, будет высоко оценен. Благодарю.

Ответы на вопрос(10)

Ваш ответ на вопрос