Я попытался сравнить значения ValueOf, parseInt, Ints.tryParse, NumberUtils.createInteger и NumberUtils.toInt с программой ниже. Я был на JDK 1.8.0
Как и ожидалось, методы, которым не нужно было создавать объект Integer, были самыми быстрыми. Мои результаты были:
valueOf took: 77
parseInt took: 61
Ints.tryParse took: 117
numberUtils.createInteger took: 169
numberUtils.toInt took: 63
Итак, резюме:
Если вы можете получить с помощью int, используйте Integer.parseInt.
Если вам абсолютно необходимо Integer, используйте Integer.valueOf
Если вам нужно удобство не обрабатывать исключения при разборе или если вы не уверены в формате ввода (т. Е. Это строка, которая не должна быть числом), используйте Ints.tryParse
Код, который я использовал:
public class HelloWorld {
public static int limit = 1000000;
public static String sint = "9999";
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < limit; i++) {
Integer integer = Integer.valueOf(sint);
}
long end = System.currentTimeMillis();
System.out.println("valueOf took: " + (end - start));
start = System.currentTimeMillis();
for (int i = 0; i < limit; i++) {
int integer = Integer.parseInt(sint);
}
end = System.currentTimeMillis();
System.out.println("parseInt took: " + (end - start));
start = System.currentTimeMillis();
for (int i = 0; i < limit; i++) {
int integer = Ints.tryParse(sint);
}
end = System.currentTimeMillis();
System.out.println("Ints.tryParse took: " + (end - start));
start = System.currentTimeMillis();
for (int i = 0; i < limit; i++) {
Integer integer = NumberUtils.createInteger(sint);
}
end = System.currentTimeMillis();
System.out.println("numberUtils.createInteger took: " + (end - start));
start = System.currentTimeMillis();
for (int i = 0; i < limit; i++) {
int integer = NumberUtils.toInt(sint);
}
end = System.currentTimeMillis();
System.out.println("numberUtils.toInt took: " + (end - start));
}
}