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