Джек Ширази Задача по Java-оптимизации DoubleToString - PullRequest
2 голосов
/ 08 августа 2011

в книге Джека Ширази «Настройка производительности Java» он представляет способ оптимизации преобразования из двойного в строковое.код оптимизации можно найти здесь: http://onjava.com/onjava/2000/12/15/graphics/DoubleToString.java

однако, существует некоторая проблема с конкретными числами для двухзначного дисплея, при использовании метода с 0,0951 (до 0,0999) он возвращает «0,0а ", что явно неверно.при запуске с 0.0949 он корректно возвращает 0.09.при запуске с 1.0951 он корректно возвращает 1.10.

есть идеи о том, что не так?Я пытаюсь понять мелочи, но пока не нашел виновника.

Вот мой основной тест:

public DoubleToString() {
double d1 = 0.0949;
double d2 = 0.0951;

StringBuffer sb = new StringBuffer();

sb.append("display d1 = ");
appendFormatted(sb, d1, 2, '.', ',', 3, '-', '-');
sb.append(" : ");
appendFormatted(sb, d2, 2, '.', ',', 3, '-', '-');

System.out.println(sb.toString());
}

1 Ответ

0 голосов
/ 08 августа 2011

Сильное предложение:

  1. Создание эталонного теста, который делает 100 000 или миллион двойных в строку преобразований в цикле.

  2. Получите время для использования "appendFormatted ()"

  3. Сравните время для использования стандартного Java DecimalFormat (по состоянию на Java 1.4, 2002) или printf Formatter (по состоянию на Java 5, 2004)

  4. Считайте, что эта статья была написана еще в 2000 году ... и многие из "оптимизаций", о которых он говорит, несомненно, полностью устарели по сравнению с текущими JDK и JVM.

ИМХО ...

...