Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Скорость вывода с CRT и без

Автор: sheka 15.05.2011 0:53

Объясните, пожалуйста, полученный

результат: (Показать/Скрыть)
Прикрепленный файл  Result.txt ( 296 байт ) Кол-во скачиваний: 689
И
почему? (Показать/Скрыть)

Автор: IUnknown 15.05.2011 2:40

Что именно тебя удивляет в результате? Извини, я не понял, что ты хотел сказать этим "тестом". Ты уж уточняй, что именно "тестировалось", на всякий случай...

Цитата
//при Сrt и выводе на экран при такой
//записи на экран выводятся пробелы,
//а при такой write(output,'*'); все нормально
А ты ассоциируй файл с консолью правильно - все будет нормально. Кто разрешил делать f := output ?
AssignCRT(f); rewrite(f);
надо...

Автор: sheka 15.05.2011 2:53

Да, действительно, о чем это я? smile.gif
Тестировал время работы функции write при подключенном CRT и при отключенном. Вывод в файл и на экран.
Почему разница между двумя первыми тестами в много раз больше разницы между 2мя другими - это более менее понятно: коэффициентом умноженным на разницу является время отрисовки символов.
Но в чем же разница между реализациями этой функции в модулях CRT и system, если не ошибаюсь?

Просто тов. Препод говорил, что CRT работает на много быстрее, а вот случайно наткнувшись на эту тему [ http://forum.pascal.net.ru/index.php?showtopic=26952 - Lapp] и на ваши высказывания по этому поводу решил усомниться в Его Величества правоте.

Автор: IUnknown 15.05.2011 3:48

Цитата
Просто тов. Препод говорил, что CRT работает на много быстрее
Тов. препод наверняка имел в виду другой компилятор, да? smile.gif Кстати. Хочешь удивиться еще больше? запусти этот же тест под TP (ну, правда его понадобится чуть-чуть переделать, ибо он не будет компилироваться в таком виде. Заодно и тебе будет наука: не все, что пропускает FPC во-первых, правильно, а во-вторых вообще корректно с точки зрения синтаксиса, принятого в Турбо-Паскале).

Автор: -TarasBer- 15.05.2011 15:29

Чтобы было быстрее, надо выводить в файл через BlockWrite, а на экран через $B800:$0000. Так что напиши программу вот через это вот, а потом преподу так и скажи, что ты это сделал для того, чтобы ускорить вывод строчки на экран.