Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стандартные календарные расчеты 
:(
    Опции темы
Mirkes
Дата 14.1.2012, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Цитата(arcsupport @  14.1.2012,  14:17 Найти цитируемый пост)
Mirkes, Вас не смущает, что формулы для расчетов стандартной ошибки и стандартного отклонения, реализованные в Excel, отличаются от традиционных русских формул, приведенных в учебниках? 

Нет, не смущает. Во первых среднее там считалось так же, во вторых стандартное отклонение при 100 запусках будет отличаться от канонической формулы в корень из 99/100=0.9949 раза, что никак не влияет на корректность результата.

Господа, большое спасибо за ссылку на статью по измерению скорости. Автор оказался парнем, которого я когда-то учил информатике в КЛШ. Мы с ним списались и он по собственной инициативе провел серию экспериментов с нашими методами. Его мнение и его результаты привожу ниже
Цитата

Нормальный бенчмарк.

Ремарки:

1. Я бы всё-таки в $sum складывал все три результата, потому что метод может заинлайниться, и наш HotSpot убьёт ненужные присвоения в rob[0],
rob[1], а может и методы, генерирующие результат. Кстати, после этого стало вот так:

    robust: 708568052 11000000
  fastDiff: 759217984 10000000
      stag: 1035854751 10000000
      joda: 757110632 10000000

$sum должен по смыслу быть одинаковым во всех случаях?

2. Поскольку измеряемые методы утилитарные, их не имеет смысла делать не static? В конкретном случае JIT'у придётся девиртуализовать
Days.stag(), поставить внутри цикла проверки на тип Days, и, в общем, внести искажения, по сравнению со случаем, который вы наверняка будете
использовать в production. Можно было бы надеяться, что эти искажения константны, но там начинаются приседания с предсказателями переходов в
CPU и их нелинейностях в зависимости от длины перехода... В общем, stag(), joda(), fastDiff(), robust() неплохо сделать static.




Обычно я поверяю бенчмарки, запуская их в нашем тёплом ламповом харнессе на последней версии JDK.

JDK 7u4, Linux x86:

$ java -Xmx1g -Xms1g -server -XX:+UseParallelOldGC -version
java version "1.7.0_04-ea"
Java™ SE Runtime Environment (build 1.7.0_04-ea-b01)
Java HotSpot™ Server VM (build 22.0-b06, mixed mode)

+ последняя Joda Time (2.0).

Вот результат для 1-поточного теста:

Benchmark                           Thr Cnt  Sec   Mean     Mean error   Var Units
GeneratedDaysBench.fastdiff  1   100   1    640.861  6.883          686.840 ops/msec
GeneratedDaysBench.joda      1   100   1    611.794  2.076           62.477 ops/msec
GeneratedDaysBench.robust   1   100   1    631.019  7.173         745.795 ops/msec
GeneratedDaysBench.stag      1   100   1    440.387  1.649           39.412 ops/msec

Ошибки достаточно малы, чтобы увидеть разницу между. Обратите внимание на fastDiff ;)

Кроме того, мы обычно поверяем то же самое, загрузив систему по полной (там периодически возникают низкоуровневые эффекты, например, драки за
общий кэш, или даже внезапно кончающиеся ALU =). Вот результат для 4-поточного теста (у меня 2 ядра, по 2 гипертреда на каждом):

Benchmark                             Thr   Cnt   Sec      Mean     Mean error      Var Units
GeneratedDaysBench.fastdiff     4    100     1    1541.358     11.791       2015.563 ops/msec
GeneratedDaysBench.joda        4    100     1    1432.557      13.652      2701.885 ops/msec
GeneratedDaysBench.robust     4    100     1    1581.539      17.988      4690.986 ops/msec
GeneratedDaysBench.stag        4    100     1    1035.490        7.928        911.074 ops/msec

Ничего особенно в расстановке не изменилось.

В приложении два сырых лога, может оттуда можно извлечь ещё какую-нибудь полезную инфу.



Если кому-то интересно, логи могу выложить. Еще раз спасибо за ссылку.


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 14.1.2012, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Уточнил смысл приведенных величин и получил вот какую статистику
Цитата

Benchmark                     Thr   Cnt   Sec    Mean    Mean error    Var    Units
GeneratedDaysBench.fastdiff    1    100    1    640.861    6.883    686.84    ops/msec
GeneratedDaysBench.joda        1    100    1    611.794    2.076     62.477   ops/msec
GeneratedDaysBench.robust      1    100    1    631.019    7.173    745.795   ops/msec
GeneratedDaysBench.stag        1    100    1    440.387    1.649     39.412   ops/msec
       
Benchmark                     Thr   Cnt   Sec    Mean    Mean error    Var    Units
GeneratedDaysBench.fastdiff    4    100    1   1541.358   11.791   2015.563   ops/msec
GeneratedDaysBench.joda        4    100    1   1432.557   13.652   2701.885   ops/msec
GeneratedDaysBench.robust      4    100    1   1581.539   17.988   4690.986   ops/msec
GeneratedDaysBench.stag        4    100    1   1035.49     7.928    911.074   ops/msec

означает следующее
Цитата

                                  1 поток           4 потока
GeneratedDaysBench.fastdiff    640.861+-6.883    1541.358+-11.791
GeneratedDaysBench.joda        611.794+-2.076    1432.557+-13.652
GeneratedDaysBench.robust      631.019+-7.173    1581.539+-17.988
GeneratedDaysBench.stag        440.387+-1.649    1035.490+-7.928


Результат убойный - почти с точностью до наоборот по отношению к моим выводам  smile 

Это сообщение отредактировал(а) Mirkes - 14.1.2012, 17:03


--------------------
Mirkes
PM MAIL   Вверх
Dummy
Дата 15.1.2012, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 9
Всего: 19



Хм. Прочитав, сначала был эмоционально напуган, а потом возник вопрос:
Цитата(Mirkes @  14.1.2012,  16:53 Найти цитируемый пост)
                                  1 поток           4 потока
GeneratedDaysBench.fastdiff    640.861+-6.883    1541.358+-11.791
GeneratedDaysBench.joda        611.794+-2.076    1432.557+-13.652
GeneratedDaysBench.robust      631.019+-7.173    1581.539+-17.988
GeneratedDaysBench.stag        440.387+-1.649    1035.490+-7.928

- это все-таки величины в каких единицах? Количество отработавших вызовов за миллисекунду?

Это сообщение отредактировал(а) Dummy - 15.1.2012, 22:28
PM MAIL   Вверх
Mirkes
Дата 16.1.2012, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Цитата(Dummy @  15.1.2012,  21:48 Найти цитируемый пост)
- это все-таки величины в каких единицах? Количество отработавших вызовов за миллисекунду?

Наконец разобрался с этими величинами и провел свои тесты. Результаты разборки я суммировал в следующей теме Измерение скорости. Измеряется действительно число вызовов за милисекунду. Относительно наших методов мой результат следующий (в порядке убывания скорости)
robust   0.780+-0.009
fastDiff  0.762+-0.004
joda      0.712+-0.005
stag      0.525+-0.002

результаты Алексея Шепилева абсолютно аналогичны.
Так что объединенный разум VinGrad побил JodaTime! Ура Нам!! smile  smile 

Это сообщение отредактировал(а) Mirkes - 16.1.2012, 18:49


--------------------
Mirkes
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.