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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #105 : Декабрь 04, 2016, 09:38:35 am »
Доступны результаты нового прогона тестов. Теперь можно оценить разброс времени исполнения каждого теста.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #107 : Декабрь 04, 2016, 06:54:15 pm »
А вот как выглядит процесс тестирования в плане загрузки CPU & Disk IO на сервере.
« Последнее редактирование: Декабрь 04, 2016, 06:59:25 pm от valexey_u »
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #108 : Декабрь 04, 2016, 10:25:00 pm »
Следующий прогон тестов будет запущен через 24 часа.
Мне надо допилить сборку и тестирование новых решений.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #109 : Декабрь 04, 2016, 10:28:15 pm »
Похоже, что решение на модуле-2 (merge_heap, merge_qs еще не пускал) выдает не верные результаты на файлах больше 128 Мб. Но надо еще потестить.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #110 : Декабрь 05, 2016, 12:15:33 am »
Похоже, что решение на модуле-2 (merge_heap, merge_qs еще не пускал) выдает не верные результаты на файлах больше 128 Мб. Но надо еще потестить.

Кстати, а как проверяешь корректоность? Отдельная прога?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #111 : Декабрь 05, 2016, 07:38:14 am »
Добавил еще одно решение - мультипоточное. Создал пулреквест - valexey, мерджни когда удобнее.

Как ни странно, получил хороший прирост (больше 30%) даже не моем дохлом нетбуке. Заодно убедился, что на оном нетбуке честных два ядра (раньше думал, что они бутафорские, какие-нибудь хипертрединговые).

Еще из интересных наблюдений - прирост есть даже если сортировать в единственном потоке, но отдельно от чтения. Т.е., если скорость чтения с диска сопоставима со скоростью сортировки в памяти, то за счет мультипоточности можно получить выигрыш даже на одноядерном железе.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #112 : Декабрь 05, 2016, 08:46:17 pm »
>Как ни странно, получил хороший прирост (больше 30%) даже не моем дохлом нетбуке.

А как это узнать? Разве ещё остались машины с одним ядром?

А прирост производительности даже на одном ядре будет потому, что с диска в память копирование осуществляет не процессор, а DMA.
« Последнее редактирование: Декабрь 05, 2016, 08:48:45 pm от Valery Solovey »

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #113 : Декабрь 05, 2016, 08:51:09 pm »
Кстати, тоже интересен способ проверки решений.

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #114 : Декабрь 05, 2016, 09:02:49 pm »
Кстати, тоже интересен способ проверки решений.

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

Пока проверка довольно тупая - через md5 суммы файлов ответов, исходим из того, что верные ответы у всех должны быть одинаковые, а вот ошибаются программисты в разных алгоритмах на разных языках, реализованных независимо друг от друга - по разному. Исходя из этого были выбраны вероятно правильные md5 суммы и теперь с ними сравниваются ответы.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #115 : Декабрь 05, 2016, 10:27:22 pm »
Не понятно... Почему неубывающая последовательность неправильна?

И почему равенство значений подменяется равенством хэшей?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #116 : Декабрь 05, 2016, 10:40:34 pm »
Не понятно... Почему неубывающая последовательность неправильна?

И почему равенство значений подменяется равенством хэшей?

Потому, что вот псевдокод который пройдет твой тест:
in := open("input");
out := create("output");
for i:=0; i<in.size/4; ++i {
    out.write(i);
}
При этом он ничего сортировать не будет. Ему вообще плевать на входные данные, ему важно только сколько этих данных.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #117 : Декабрь 06, 2016, 04:23:55 am »
Этот вариант не катит просто в силу того, что уже было в практике, когда на выходе была неправильная неубывающая последовательность чисел. Проверку оно проходило, но результат был не правильным.
Что за фигня? Это же простейший цикл, как он может дать неверный результат?

Пока проверка довольно тупая - через md5 суммы файлов ответов, исходим из того, что верные ответы у всех должны быть одинаковые, а вот ошибаются программисты в разных алгоритмах на разных языках, реализованных независимо друг от друга - по разному. Исходя из этого были выбраны вероятно правильные md5 суммы и теперь с ними сравниваются ответы.
"вероятно правильные md5 суммы" -- порадовало ))) вот она, партизанщина ))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #118 : Декабрь 06, 2016, 04:27:53 am »
Не понятно... Почему неубывающая последовательность неправильна?

И почему равенство значений подменяется равенством хэшей?

Потому, что вот псевдокод который пройдет твой тест:
in := open("input");
out := create("output");
for i:=0; i<in.size/4; ++i {
    out.write(i);
}
При этом он ничего сортировать не будет. Ему вообще плевать на входные данные, ему важно только сколько этих данных.
В таком случае надо добавить проверку статистики файла -- сколько тех или иных чисел в обоих файлах ))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #119 : Декабрь 06, 2016, 06:54:36 am »
Я сравнивал суммы чисел - такая упрощенная статистика.