C++ / Производительность Java для Нейронных сетей?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

5
задан bias 19 July 2009 в 04:52
поделиться

6 ответов

Горячая точка JIT может теперь произвести код быстрее, чем C++. Причиной является эмпирическая оптимизация во время выполнения.

Например, это видит, что определенный цикл берет "ложное" ответвление 99% времени, и переупорядочьте команды машинного кода соответственно.

Существует много статей об этом. Если Вы хотите все подробности, прочитайте превосходное техническое описание Sun. Для более неофициальной информации попробуйте этого.

10
ответ дан 18 December 2019 в 14:54
поделиться

Я интересовался бы сравнением между Горячей точкой, JIT и ведомая профилем оптимизация оптимизировали C++.

Проблема я вижу с Горячей точкой JIT (и любой оптимизированный временем выполнения-профилем JIT-компилятор) состоит в том, что статистика должна быть сохранена, и код изменяется. В то время как существуют единичные случаи, это приведет к быстрее рабочему коду, я сомневаюсь, что оптимизированные профилем JIT-компиляторы будут работать быстрее, чем хорошо оптимизированный C или код C++ при большинстве обстоятельств. (Конечно, я мог быть неправым.)

Так или иначе обычно Вы собираетесь быть во власти большего проекта, с помощью того же языка, в котором он записан. Или Вы будете во власти базы знаний своих коллег. Или Вы будете во власти платформы, для которой Вы нацелены (действительно ли JVM доступна на архитектуре, для которой Вы нацелены?). В редком случае у Вас есть полная свобода, и Вы знакомы с обоими языками, сделайте некоторые сравнения с инструментами, которые Вы имеете в Вашем распоряжении. Это - действительно единственный способ определить то, что является лучшим.

2
ответ дан 18 December 2019 в 14:54
поделиться

Единственный возможный ответ: сделайте прототип и меру для себя. Если мой опыт представляет интерес, Java и C# были всегда намного медленнее, чем C++ для вида работы, которую я делал - я верю главным образом из-за потребления верхней памяти. Конечно, можно прийти к совершенно другому заключению.

2
ответ дан 18 December 2019 в 14:54
поделиться

Это не строго о C++ по сравнению с производительностью Java, но тем не менее интересно в том отношении: статья о производительности программ, работающих в собравшей "мусор" среде.

0
ответ дан 18 December 2019 в 14:54
поделиться

Если чрезмерная сборка "мусора" является беспокойством, можно всегда снова использовать неиспользованные объекты высокой маслобойки.

Создайте фабрику, которая сохраняет очередь SoftReferences к переработанным объектам, с помощью тех прежде, чем создать новые объекты. Затем в код, который использует эти объекты, явно возвратите эти объекты фабрике для переработки.

0
ответ дан 18 December 2019 в 14:54
поделиться

По большому счету, вы обсуждаете, может быть, 5% -ную разницу в производительности, при которой вы могли бы на несколько порядков увеличить за счет перехода на CUDA или выделенное оборудование.

-1
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: