Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2015, 10:23   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
дадут НЕ ПРИНЦИПИАЛЬНУЮ разницу в быстродействии
Шутишь?
Цитата:
Проверите?
Понаписать тестовую прогу?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 26.11.2015, 10:31   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Серж, на больших файлах должно дать. При маленьком блоке больше обращений с жесткому диску. На маленьких файлах разницы особой нет - там кеширование файла операционкой свою роль должно сыграть, и все операции чтения по сути с ОП. А вот на больших будет значительная разница, должна быть. Не проверял на гигабайтах
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.11.2015, 10:34   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

TStringList, TFileStream, FileMapping ВСЕ это средства для ОБЕСПЕЧЕНИЯ удобной РАБОТЫ ПАРСЕРА.
Цитата:
Есть парсер, но обрабатывает куски данных не больше 10-12 мегабайт. При 50 начинает подвисать, с потугами но и их обрабатывает.
Парсер должен прочитать (С ДИСКА) файл как минимум ОДИН раз(видимым для программиста образом), и возможно много-много раз еще оттуда же (но уже "незаметно" для программиста ).
Короче говоря хотите получить дельные советы по ускорению.
1) озвучьте ИСХОДНУЮ задачу. (задачу которую должен делать парсер).
и не только парсер, ведь ЕГО(парсера) результатами кто-то пользуется (по крайней мере они куда-то складываются в формате удобном для ПОСЛЕДУЮЩЕЙ обработки/анализа).
2) код парсера в студию.

пример "очень простого" улучшения на StringList
почти незаметного для программиста, но очень заметного для компьютера.
Цитата:
Сообщение от blblbl-org Посмотреть сообщение
Евгений, так у меня так же и сделано (в первом сообщении код).. Это единственный, наиболее быстрый способ получается?
Цитата:
Сообщение от blblbl-org Посмотреть сообщение
Евгений, спасибо.
Скорость выросла в 6 раз )
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 26.11.2015 в 10:42.
evg_m вне форума Ответить с цитированием
Старый 26.11.2015, 10:45   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Понаписать тестовую прогу?
ну, если не сложно.
я бы сам проверил, но я сейчас "безлошадный" (Delphi под рукой нет).
посмотрим, насколько я ошибся!


Цитата:
Сообщение от Аватар Посмотреть сообщение
Серж, на больших файлах должно дать. При маленьком блоке больше обращений с жесткому диску.
ну да, по логике так и есть.
Но у меня сложилось впечатление (возможно, что и ошибочное), что TFileStream.ReadBuffer уже использует кеширование. Хотя, конечно, возможно, что я наблюдал дисковый кэш операционнки, не буду спорить.
Вот поэтому и хотелось бы увидеть конкретную фактическую разницу.

Последний раз редактировалось Serge_Bliznykov; 26.11.2015 в 10:48.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2015, 11:01   #15
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
уже использует кеширование.
Для больших файлов и мапинг и кэш, все используется. Система это делает на низком уровне. Гдето у Рихтера про это написано.

Последний раз редактировалось come-on; 26.11.2015 в 11:03.
come-on вне форума Ответить с цитированием
Старый 26.11.2015, 11:02   #16
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну основное правило - читать блоками кратными кластерам жесткого диска. Даже если размер блока будет больше, но не кратный, то скорость все равно упадет. Поэтому берете 4К и кратно грузите сколько Вам надо за один раз. Даже если Вам надо реально меньше, все равно грузить 4к будет быстрей.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 26.11.2015, 17:13   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
я бы сам проверил, но я сейчас "безлошадный" (Delphi под рукой нет).
А чо так? Хош продам копию?

Хы. Смотрите, как интересно работает кэширование.



Исходники, могу дать, кому интересно.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 26.11.2015, 17:32   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Спасибо. Наглядно и весьма любопытно!

Как я понимаю, наивысшая скорость при размере блока в 64 кб ?
(кстати, а что у Вас с винта реально читается 880 Мб в секунду? В тестах?)

исходники. да нет, пожалуй в них нет необходимости...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2015, 17:54   #19
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

не понял вопроса.
поясни.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 26.11.2015, 18:08   #20
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Исходники не нужны. Тест конечно кросивый.

Это КЭШ операционной системы выдаёт 880 МБ/с. HDD больше 200 Мбайт/с я не видел. А так обычно 100-150 МБайт/с. SSD до 500-600 МБайт/с выдают.

Начиная с Win Visat ОС использует всю свободную память под файловый кэш. Когда писал свою программу для измерения скорости диска делал очистку кэша. Для этого просто выделял кучу памяти что-бы вытеснить кэш из памяти.

А так оптимальный размер 256 КБайт.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка файлов Pepsik Помощь студентам 1 10.07.2011 21:35
С++. Обработка файлов teach Помощь студентам 5 02.04.2011 16:41
Обработка файлов FauLL Общие вопросы C/C++ 1 23.06.2010 21:34
Обработка файлов. Morzik8 Помощь студентам 2 17.05.2010 20:05
Обработка файлов Си++ modulrev Помощь студентам 22 19.02.2009 18:53