![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрое сохранение текста
Rambo © (2011-11-23 13:27:00)Нужно сохранять около тысячи файлов на диск (текст из памяти). Пока использую TStrings.SaveToFile, и вот решил это дело ускорить.
Будет ли быстрее использовать нетипизированный подход или старые добрые assign-write?
KilkennyCat (2011-11-24 23:44:00) [1]я так и знал - автор из тех, кто создает помойку.
Loginov Dmitry (2011-11-24 13:48:00) [2]
> а зачем такое?
http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D1%80%D0%B2%D0%B5%D0%B9
QAZ (2011-11-24 11:43:00) [3]
> а зачем такое?
а чтоб ты через 10 страниц прошол, пока в итоге не получиш "Чтобы скачать файл пришли СМС..."
KilkennyCat (2011-11-24 02:57:00) [4]
> генерация какого-нибудь сайта с тысячами рандомных
> > страничек?
а зачем такое?
Ega23 (2011-11-23 22:13:00) [5]
> Length - не проблема, а вот TStrings.Text... Посмотри исходники
> геттера )
Ну нормальный геттер.
И вообще, неча заморачиваться, TStrings.SaveToStream(TFileStream)
Rambo (2011-11-23 22:07:00) [6]Всем спасибо!
Rambo (2011-11-23 22:06:00) [7]
> Или это генерация какого-нибудь сайта с тысячами рандомных
> страничек?
Бинго!
Генерация выполнена за 38,907c. Сгенерировано 5277
В среднем на парсинг ушло: 0,685 мс
На сохранение файлов: 7,18 мс
Думаю покатит скорость.
Loginov Dmitry (2011-11-23 22:01:00) [8]
> Нужно сохранять около тысячи файлов на диск (текст из памяти).
> Пока использую TStrings.SaveToFile, и вот решил это дело
> ускорить.
Как часто "Нужно сохранять около тысячи файлов на диск"? Если это разовая операция, то можно 5 минут чай/кофе выпить.
Еже ли каждую минуту, то можно подумать об оптимизации. Как бы то ни было, запись 1000 файлов медленнее, чем запись одного, все-таки файловая система не бесплатно обходится. И почему столько файлов, с текстом, кто все это читать будет? Или это генерация какого-нибудь сайта с тысячами рандомных страничек?
Омлет (2011-11-23 21:48:00) [9]> Ega23 © (23.11.11 21:42) [9]
> А в чём проблема???
Length - не проблема, а вот TStrings.Text... Посмотри исходники геттера )
Rambo (2011-11-23 21:45:00) [10]Медленно. Гораздо быстрее вбить бесконечность
Ega23 (2011-11-23 21:42:00) [11]
> А без Length можно?
А в чём проблема??? Религия не позволяет?
Rambo (2011-11-23 21:35:00) [12]А без Length можно?
Ega23 (2011-11-23 21:17:00) [13]
> передать параметр nNumberOfBytesToWrite
Length(TStrings.Text) * SizeOf(Char)
Rambo (2011-11-23 18:28:00) [14]В общем решил использовать CreateFile WriteFile, вроде быстрее, последний вопрос: что будет если WriteFile передать параметр nNumberOfBytesToWrite=99999999999? Будут проблемы? Хочу сэкономить на подсчете символов.
Jeer (2011-11-23 14:46:00) [15]
> Быстрое сохранение текста
Не озвучены количественные и сравнительные показатели "быстрее".
han_malign (2011-11-23 14:38:00) [16]
> Быстрее, чем CreateFile - WriteFile, не сделаешь
- всегда есть место для совершенствования...
Например асинхроном по несколько десятков в пуле. Правда все равно в шину упрется, но есть шанс несколько процентов вытянуть, за счет более плотной набивки системного кэша...
Anatoly Podgoretsky (2011-11-23 14:00:00) [17]> Rambo (23.11.2011 13:27:00) [0]
Очень просто - измерь
Ega23 (2011-11-23 13:50:00) [18]
> и вот решил это дело ускорить.
От файловой операции никуда не уйдёшь.
Возможно, какая-нибудь дефрагментация диска даст прирост скорости бОльший, нежели попытки оптимизации кода.
clickmaker (2011-11-23 13:39:00) [19]Быстрее, чем CreateFile - WriteFile, не сделаешь