Rails 3 очень медленно инициализируется на Ruby 1.9.2

Другое событие 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));
}

26
задан Harry 25 January 2011 в 01:54
поделиться

2 ответа

В Rails-Core есть тема об этом - http://groups.google.com/group/rubyonrails-core/browse_thread/thread/88519ef5a53088a1/c01ba447c6dc0de7?lnk=raot

Цитировать Иегуду Каца

«Есть вещи, которые код C требует в 1.9, которые замедляют работу. Одним из таких примеров является повторная проверка $ LOAD_PATH, чтобы убедиться, что все это расширяется при каждом требовании. Это то, что должно быть решено с помощью ruby-core. Я открою тикет на Redmine, если его еще нет. "

Я также испытываю эту проблему, и проблема $ LOAD_PATH кажется потенциальной причина. Будем надеяться, что это скоро исправят.

7
ответ дан Alastair Brunton 25 January 2011 в 01:54
поделиться

Попробуй связать (в unix), dtruss (в mac) свою команду (хотя может понадобиться sudo) Он покажет вам, где процесс тратит свое время. Обратите внимание, где он останавливается. Это определенно не нормально.

3
ответ дан Zepplock 25 January 2011 в 01:54
поделиться
Другие вопросы по тегам:

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