Автор Тема: Расширенный тест на производительность.  (Прочитано 105897 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #135 : Декабрь 07, 2016, 04:24:06 am »
Да, а многопоточное решение по производительности не отличимо в этом тесте от однопоточного.

Что очень странно. Единственное объяснение, которое я могу придумать - все уперлось в диск. А наблюдаемая разница на моем нетбуке - это потому что проц совсем дохлый.

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #136 : Декабрь 07, 2016, 05:24:34 am »
То есть выходит, что чтобы и читать и писать, нужно использовать openedforrandom. Т.е., вероятно, использовать не SeqFile, а RndFile.
Я надеялся, что SeqFile как-то оптимизирван для последовательного чтения. Но похоже, там банально вызывается какой-нибудь fread/fwrite без буфферизации. Попробовал еще на аде. Там та же петрушка, только ещё медленнее раза в 2-3.

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #137 : Декабрь 07, 2016, 05:30:00 am »
Да, а многопоточное решение по производительности не отличимо в этом тесте от однопоточного.

Что очень странно. Единственное объяснение, которое я могу придумать - все уперлось в диск. А наблюдаемая разница на моем нетбуке - это потому что проц совсем дохлый.
Для внешней сортировки всегда полезнее иметь несколько дисков, чем несколько процессоров.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #138 : Декабрь 07, 2016, 01:48:13 pm »
Да, а многопоточное решение по производительности не отличимо в этом тесте от однопоточного.

Что очень странно. Единственное объяснение, которое я могу придумать - все уперлось в диск. А наблюдаемая разница на моем нетбуке - это потому что проц совсем дохлый.
Открыта тайна третьей планеты!

В смысле, я нашел в чем была засада - многопоточное решение не смогло слинковаться, в итоге вместо него тестировалось обычное fast (да, скрипты тестирования писал я, и у меня крайне кривые руки). Сейчас пофикшу.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #139 : Декабрь 07, 2016, 02:53:17 pm »
А после того как собрали, многопоточка выходила за ограничения по памяти, а после фикса этого выдает не верный результат (размер файла не верен).
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #140 : Декабрь 08, 2016, 07:55:41 am »
А после того как собрали, многопоточка выходила за ограничения по памяти, а после фикса этого выдает не верный результат (размер файла не верен).

Фикснул. Как я и предполагал - непрваильно поток прибивался, до того как он успел файлик записать :)
С памятью интереснее - у меня не получилось выставить ограничение (процесс не прибивается, если много отжирает).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #141 : Декабрь 08, 2016, 02:17:48 pm »
А после того как собрали, многопоточка выходила за ограничения по памяти, а после фикса этого выдает не верный результат (размер файла не верен).

Фикснул. Как я и предполагал - непрваильно поток прибивался, до того как он успел файлик записать :)
С памятью интереснее - у меня не получилось выставить ограничение (процесс не прибивается, если много отжирает).
Через час-два будут результаты очередного быстрого прогона.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #142 : Декабрь 08, 2016, 03:37:37 pm »
Результаты готовы.
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #143 : Декабрь 08, 2016, 06:53:39 pm »
Интересно, а срди тестов есть распределения с малой дисперсией?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #144 : Декабрь 08, 2016, 07:38:51 pm »
Интересно, а срди тестов есть распределения с малой дисперсией?
скорее всего пока что нет. но всё будет :-) если для вашего алгоритма существует наихудший набор данных, то он будет среди тестов. :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #145 : Декабрь 08, 2016, 08:38:41 pm »
Это не для моего :-). Мне кажется bucketsort с фиксированными корзинами должен на таких задачах страдать.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #146 : Декабрь 08, 2016, 08:57:44 pm »
Это не для моего :-). Мне кажется bucketsort с фиксированными корзинами должен на таких задачах страдать.
Ну, это я отвлеченно говорил :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #147 : Декабрь 08, 2016, 10:00:17 pm »
Ну вот тест на 2Гб файле, первая колонка - с большой дисперсией, вторая колонка - с малой (массив одинаковых значений).

comdiv hardcore:
2048 458.21    32.54
comdiv hardcore-single-temp:
2048 127.72    74.92
elektrybalt merge_qs:
2048 failed    failed
elena files_merge:
2048 588.93    481.45
elena linux_mmap:
2048 194.04    104.73
valexey sortix:
2048 285.63    30.70
vlad fast:
2048 141.40    66.23
vlad simple:
2048 606.04    499.26
vlad multi-threaded:
2048 279.11    147.41
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #148 : Декабрь 08, 2016, 11:17:15 pm »
В общем, дальше планы такие: я сейчас запущу пятикратный прогон теста. Потом, если кто-то будет обновлять/исправлять/добавлять решения я буду делать новые прогоны. С системе тестирования по крайней мере до понедельника никаких изменений не будет, не будет и каких-то решений от меня.

На следующей неделе (а если не уложусь, то и через неделю) я хочу допилить визуализацию результатов тестирования (очевидно, что текущий вариант не достаточно нагляден для случая когда у нас много разных решений), плюс добавлю дополнительные тесты а также модифицирую своё решение и добавлю ещё одно своё.

Потом хочу попробовать так или иначе найти ещё участников соревнования :-) Если никого больше не найдется, то будет финальное тестирование и подготовка к фазе 2.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #149 : Декабрь 09, 2016, 09:17:02 am »
А как насчёт сделать показ не абсолютных значений, а относительных?
Самый быстрый вариант - это 100%, а все остальные больше (или меньше) этой величины.

В таком случае можно будет прм обновлении одного варианта прогонять только самый быстрый и обновлённый варианты. Полный прогон, конечно, можно считать более точным, но его не обязательно делать ежедневно: нам же интересен порядок величин для оценки работы алгоритмов. То есть, если одно решение быстрее другого, то этого будет достаточно.

И ещё: сильно ли различаются результаты тестов, проведённых над одними и теми же алгоритмами в разные дни? Есть ли смысл перезапускать уже проведённые тесты?