Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное тестирование > Проверка 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)

Какие будут предложения smile

Автор: S.A.P. 24.11.2005, 11:57
С аривированием замутил ИМХО. smile .

Запись, считывание и обход директорий самое то. Для ввода - вывода тестим stdio, fstream ы и API. Для обхода директорий можно Boost и API.

Жависты с Дот нетчиками пусть тоже что - нибудь предложат smile .

Автор: Mayk 12.12.2005, 14:08
Цитата(Perchilla @ 24.11.2005, 15:57)
С аривированием замутил ИМХО.

Ну ладно, опустим smile

Цитата(Perchilla @ 24.11.2005, 15:57)

Запись, считывание и обход директорий самое то. Для ввода - вывода тестим stdio, fstream ы и API. Для обхода директорий можно Boost и API.

О! Точно! Наконец-то появится возможность заинсталить boost.

Цитата(Perchilla @ 24.11.2005, 15:57)

Жависты с Дот нетчиками пусть тоже что - нибудь предложат

Да. А то если за возьмутся сишники, то виртуальные машины проиграют.

Автор: S.A.P. 12.12.2005, 14:34
Ну так что? Никому из НЕ сишников не интересно? А то готов писать хоть сейчас, только нужно определиться что... smile .

Автор: Breezy 25.3.2006, 23:59
Мне интересно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)