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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #120 : Декабрь 06, 2016, 08:28:08 am »
Я сравнивал суммы чисел - такая упрощенная статистика.
Ну, сумма чисел -- это упрощённая контрольная сумма, тогда уж лучше сразу хеш делать, например SHA-2, а не MD5...
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #121 : Декабрь 06, 2016, 01:21:52 pm »
Я сравнивал суммы чисел - такая упрощенная статистика.
Ну, сумма чисел -- это упрощённая контрольная сумма, тогда уж лучше сразу хеш делать, например SHA-2, а не MD5...
Тут есть нюанс суммы чисел можно посчитать имея input и не сортируя его, а вот md5 и sha2 уже не выйдет - чтобы их сравнивать с корректными нужно иметь сортированный корректный output. Т.е. чтобы проверить сортировку нужно реализовать сортировку.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #122 : Декабрь 06, 2016, 01:23:08 pm »
Решение на modula-2 собранное gm2 шлепается с такой диагностикой:
this file (spill+0) has been opened for writing but is now being read
Command terminated by signal 6
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #123 : Декабрь 06, 2016, 02:31:52 pm »
Вот тебе и стандарты ISO. :-( Сейчас еще обнаружил, что в xds CARD16, CARD32..., а в gm2  CARDINAL16, CARDINAL32...
Пробовал gm2 из пакета поставить, вроде установилось, но не работает.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #124 : Декабрь 06, 2016, 02:44:42 pm »
Вот тебе и стандарты ISO. :-( Сейчас еще обнаружил, что в xds CARD16, CARD32..., а в gm2  CARDINAL16, CARDINAL32...
Пробовал gm2 из пакета поставить, вроде установилось, но не работает.
Насколько я понимаю, проблема в чем-то вроде, что файл был открыт c флагом O_WRONLY а надо было с O_RDWR. Это если на позиксно-сишный язык переводить.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #125 : Декабрь 06, 2016, 03:01:46 pm »
Вот тебе и стандарты ISO. :-( Сейчас еще обнаружил, что в xds CARD16, CARD32..., а в gm2  CARDINAL16, CARDINAL32...
Пробовал gm2 из пакета поставить, вроде установилось, но не работает.
Если что, я собирал прогу с помощью gm2 вот таким образом:
gm2 -O3 -flibs=iso,pim merge_heap.mod
Без этих опций (-flibs=iso,pim) оно не собирается.

Да! Еще надо поставить либу pth - если система дебианоподобная, то так: apt-get install  libpth-dev
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #126 : Декабрь 06, 2016, 03:33:39 pm »
Насколько я понимаю, проблема в чем-то вроде, что файл был открыт c флагом O_WRONLY а надо было с O_RDWR. Это если на позиксно-сишный язык переводить.
[/quote]
Ну да. Но там же написано
SeqFile.OpenWrite(spill[spno], name, SeqFile.raw+SeqFile.read+SeqFile.old, res);

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #127 : Декабрь 06, 2016, 03:44:05 pm »
Ну да. Но там же написано
SeqFile.OpenWrite(spill[spno], name, SeqFile.raw+SeqFile.read+SeqFile.old, res);
Угу. Глянул в исходники либы. Там (в FIO.mod, где собственно это дело и проверяется и кидается HALT с этим текстом) написано следующее:
TYPE
    FileUsage         = (unused, openedforread, openedforwrite, openedforrandom) ;
...
PROCEDURE CheckAccess (f: File; use: FileUsage; towrite: BOOLEAN) ;
VAR
   fd: FileDescriptor ;
BEGIN
   IF f#Error
   THEN
      fd := GetIndice(FileInfo, f) ;
      IF fd=NIL
      THEN
         IF f#StdErr
         THEN
            FormatError('this file has probably been closed and not reopened successfully or alternatively never opened\n')
         END ;
         HALT
      ELSE
         WITH fd^ DO
            IF (use=openedforwrite) AND (usage=openedforread)
            THEN
               FormatError1('this file (%s) has been opened for reading but is now being written\n',
                            name.address) ;
               HALT
            ELSIF (use=openedforread) AND (usage=openedforwrite)
            THEN
               FormatError1('this file (%s) has been opened for writing but is now being read\n',
                            name.address) ;
               HALT
...

То есть выходит, что чтобы и читать и писать, нужно использовать openedforrandom. Т.е., вероятно, использовать не SeqFile, а RndFile.
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #128 : Декабрь 06, 2016, 04:33:20 pm »
Да! Еще надо поставить либу pth - если система дебианоподобная, то так: apt-get install  libpth-dev
О! Поставил и заработало, даже собирать не пришлось.
Некоторые особенности сразу вылезли. Например, строку-константу  нельзя индексировать.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #129 : Декабрь 06, 2016, 05:08:19 pm »
Могу пока пользоваться xds для прогонов тестов, но уже на файле в 256Мб merge_heap выдает не правильный ответ. Поэтому, думаю, его в тесты пока не включу. merge_qs работает вроде бы корректно (на всех файлах еще не гонял).
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #130 : Декабрь 06, 2016, 05:50:46 pm »
Так, с ограничениями по памяти merge_qs падает:
Command exited with non-zero status 48
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #131 : Декабрь 06, 2016, 06:14:56 pm »
Так, с ограничениями по памяти merge_qs падает:
Command exited with non-zero status 48
Но при этом, как ни странно, выдает правильный ответ. Что ломает нафиг мои скрипты.
Какие-то чудеса с этой модулой.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #132 : Декабрь 06, 2016, 11:15:55 pm »
Поправил скрипты, чтобы нормально отрабатывалось и модуловское решение (merge_qs), запустил быстрый прогон (каждый файл один раз будет прогнан). Так что часов через 5 наверно прогон будет закончен, результаты автоматически опубликуются.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Расширенный тест на производительность.
« Ответ #133 : Декабрь 07, 2016, 03:21:25 am »
Готовы новые результаты. Есть новый самый быстрый алгоритм - от comdiv'a (comdiv hardcore-single-temp) а алгоритм на modula-2 merge_qs выдал не верные результаты на больших файлах:
elektrybalt merge_qs:
128 18.30
256 38.12
512 76.50
1024 154.81
2048 failed
4096 failed
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

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