61
Общий раздел / Re: Расширенный тест на производительность.
« : Декабрь 04, 2016, 09:38:35 am »
Доступны результаты нового прогона тестов. Теперь можно оценить разброс времени исполнения каждого теста.
Онлайн компилятор Oberon-07/11
Путеводитель по Оберон-проектам.
Логи jabber-конференции.
Онлайн исходники BlackBox: тут:WeBB и на github
Исходники Project Oberon V4 на github.
Сборник решений задач книги "Современное программирование с нуля!" тут. А обсуждение здесь.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
Дык у меня сам компилятор не запускается - ему тоже ncurses нужен...Ктороый, xc или xm? У меня xc нормально запускается, а xm падает что-то там про COROUNITES пишет.
$ ./xc
./xc: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
$ ./xm
#RTS: Coroutines initialization fault 3...
Дык у меня сам компилятор не запускается - ему тоже ncurses нужен...Есть 32битный xds (но там надо победить ncurses либу - компилятор требует для работы какую-то древнющую версию).Попробовал сегодня, там надо просто удалить -lncurses из xc.tem - он его лепит ко всем программам.
Хотел написать переносимо, но оказывется в стандарте ISO нет функции удаления файла.Ну, файлы не обязательно удалять. Т,е. после себя все временные файлы можно оставить, тестирующая система их убьет. Ну а в ходе работы имеющиеся файлы (кроме input'a, который read only по сути своей) можно же переиспользовать.
А еще между делом выяснилось, что FAT32 может быть в 2-4раза быстрее, чем NTFS.
comdiv hardcore:
128 29.29
256 56.55
512 110.70
1024 217.70
2048 453.05
4096 938.64
elena files_merge:
128 14.08
256 39.65
512 101.85
1024 256.89
2048 629.84
4096 1586.56
elena linux_mmap:
128 5.70
256 13.92
512 37.19
1024 87.95
2048 180.32
4096 404.89
vlad fast:
128 5.59
256 11.17
512 24.98
1024 52.99
2048 131.98
4096 345.50
vlad simple:
128 8.82
256 19.48
512 60.77
1024 177.82
2048 604.67
4096 2117.47
Как Вы это ограничение выставляли?Пока что через cgroups. Потом еще более сурово ограничу.
Ну да. Считали, сделали копию, система радостно копию всосала в кеш, а дальше идет уже просто сортировка в памяти, если файловый кеш никак не ограничен.Ещё замечание 4 минуты да и 1 минута - это очень мало. Такое ощущение, что у тебя весь файл поместился в ОЗУ (в дисковый кэш системы).Насколько можно судить, решения считывают огригинальный файл один раз, а делается это быстро, но есть, конечно, и временные файлы, это может сказываться.
Для конкретной программы? Тогда - да.Да, для конкретной программы. Или группы программ, как угодно. Можно сказать что вот эта и эта программа делят общую делянку и им на всех 32Мб ОЗУ, вот столько ядер и процессорного времени, а вот этой программе отдельно 256 Мб ОЗУ. Ну и так далее. Ресурсы можно резать тонкими ломтиками и раздавать программам почти как угодно.
Ага, временно - хорошо.Ещё замечание 4 минуты да и 1 минута - это очень мало. Такое ощущение, что у тебя весь файл поместился в ОЗУ (в дисковый кэш системы). И тут уже начинает играть роль состояние оного кэша (коий также неплохо бы полностью сбрасывать перед началом запуска каждого решения) и насколько алгоритм к нему дружественен. Например если решение самостоятельно кэширует (потому, что знает что у нас ограничение в 128 Мб ОЗУ, и системные алгоритмы кеширования будут работать хуже чем своя стратегия кеширования с учетом алгоритма сортировки), то в данном случае такое решение сольет решению которое отдает кеширование на откуп системе - у системы кеш будет во всё системное ОЗУ (4 Гб? 8? 16?) а собственный кеш программы будет всего 128. Даже если это умные 128, он не побьют на файле в 4Гб системный кэш который просто засосёт весь файл целиком в ОЗУ.
Создал 4-гигабайтный файл и сделал прогон для наиболее быстрых решений:Код: [Выделить]comdiv/hardcore
real 1m25.488s
md5sum = e6d6ad0bad107695536bf8bef475f9eb output
vlad/fast
real 4m9.742s
md5sum = e6d6ad0bad107695536bf8bef475f9eb output
Интересное кино получается
Ну дык ограничь. Файловый кеш также можно ограничить как и всё остальное.Практически доступное ОЗУ при этом система сама использует под кэш диска. Ну, т.е. такая масштабируемость штука идеальная на самом деле.Не идеальная, потому что часто нужно ограничить ресурсы для конкретных программ, оставив их для более приоритетных.
Ага, временно - хорошо.Вероятно кино может от многого зависеть :-) Через часок прогон закончится, глянем результат с сервака. Подозреваю, что там результаты будут иные.
Создал 4-гигабайтный файл и сделал прогон для наиболее быстрых решений:Код: [Выделить]comdiv/hardcore
real 1m25.488s
md5sum = e6d6ad0bad107695536bf8bef475f9eb output
vlad/fast
real 4m9.742s
md5sum = e6d6ad0bad107695536bf8bef475f9eb output
Интересное кино получается
elena/linux_mmap работает быстро, но без искусственных ограничений отожрало 4гигабайта памятиАдресного пространства. Практически доступное ОЗУ при этом система сама использует под кэш диска. Ну, т.е. такая масштабируемость штука идеальная на самом деле. В ход идёт всё что доступно. Другое дело что скорость не самая запредельная получается да и проблемы бывают на очень больших файлах. Плюс у измерялок памяти (чекающих сколько программа памяти отожрала) возникают проблемы - они не знают как тут что трактовать.
Поскольку из результатов прогона исчезли действительно большие файлы (временно или навсегда?), стало интересно самому сравнить решения на своей системе именно для больших файлов, благо у меня тоже стоит SSD.Временно. Просто допиливал систему, переносил на сервер, тестировал - чтобы время не тратить, ограничил до 256 мб файлы.