| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разное тестирование > Проверка IO на скорость |
| Автор: Mayk 23.11.2005, 22:02 |
| Прелюдием к данному топику послужило как минимум две темы в с++ - "Почему комп виснет при работе с файлом?" и еще одна где я бегло сравнивал stdio, fstream'ы и явовские. Предлагаю теперь более тщательно проверить различные компиляторы различных языков в различных осях на скорость работы с файлами. Итак. Текущие идеи 0)Базовые тесты 0.1) Считывания файла 0.2) Запись в файл 0.3) Копирование файла 1) Более сложные тесты. 1.1) Инвертиция файла - последний байт становится первым, первый - последним и т.д. 1.2) Рекурсивное создание директорий и создание в них файлов 1.3) Рекурсивное удаление директорий[как всех из текущей папки, так и не всех - чтобы интереснее] 2) Еще более сложные тесты 2.1) Простой препростой препроцессор. Пусть заменяет что-нибудь на что-нибудь и выдирает комментарии. 2.2) Простейший архиватор. Самый простой формат архива, который мне известен - это такой. Весь файл состоит из блоков. Заголовок блока - 1 байт. Один бит[пускай 7-ой, знаковый] показывает, что блок сжат. Если блок не сжат, то остальные 7 бит показывают размер блока. (обозначим эти биты за X) Если блок сжат, то далее в архиве идёт один байт, который надо X раз записать в выходной файл. Если не сжат - то следующие X байт идут в выходной файл без каких-либо изменений, После одного блока сразу же идёт следующий. Думаю, что пишется на коленке за час-другой . Таким образом, например, .bmpшки 8 битные сжимать хорошо(это сжатие кстати и использовалось в частности в одном доисторическом графическом редакторе. Кажется на компе "орион-128". Подробности этого граф редактора можно посмотреть в журнале "Радио" за кз какой год) 3) Обработка ошибок. Хотелось бы потестить. Но как? 4..n) ?????? Сами подтесты очень хотелось бы еще разобить где это возможно - побайтовое считывание, считывание блоками, использование системных ф-ций (CopyFile или как его там) , и special guest star - моя горячо любимая функция system! (пример - system("copy a b")) Она, кстати, может показать хороший результат. Оценку можно ставить например так - делим лучший результат данного подтеста на текущий результат данного подтеста. Получается, что максимальная оценка за один тест - 1 балл. Потом все эти баллы суммируем и определяем (пример - OCaml расправился с копированием блоками за 1 секунду, а Ada копирует файл блоками за 2 секунды. OCaml получает 1 балл, Ada - 0.5) Какие будут предложения |
| Автор: S.A.P. 24.11.2005, 11:57 |
| С аривированием замутил ИМХО. Запись, считывание и обход директорий самое то. Для ввода - вывода тестим stdio, fstream ы и API. Для обхода директорий можно Boost и API. Жависты с Дот нетчиками пусть тоже что - нибудь предложат |
| Автор: Mayk 12.12.2005, 14:08 | ||||||
Ну ладно, опустим
О! Точно! Наконец-то появится возможность заинсталить boost.
Да. А то если за возьмутся сишники, то виртуальные машины проиграют. |
| Автор: S.A.P. 12.12.2005, 14:34 |
| Ну так что? Никому из НЕ сишников не интересно? А то готов писать хоть сейчас, только нужно определиться что... |
| Автор: Breezy 25.3.2006, 23:59 |
| Мне интересно |