Конференция "KOL" » Организовать правильную работу с потоками... [Delphi, Windows]
 
  • andreil © (05.03.08 16:55) [0]
    В моей программе есть часть (основная), которая загружает кусок из одного потока в массив буффера, а потом -  в другой поток. Но при этом процессор грузится нещадно, что замедляет работу программы :(

    Вопрос - можно ли перевести кусок данных из одного FileStream в другой FileStream без промежуточного буфера? А то прога ворочает гигабайты, но скорость из-за нагрузки на процессор страдает.
  • Palladin © (12.03.08 12:45) [1]
    CopyFrom у FileStream есть?
  • mdw © (12.03.08 14:57) [2]

    > CopyFrom у FileStream есть?

    Stream2Stream(..)
  • andreil © (18.03.08 12:26) [3]
    Да, поюал Stream2Stream. Файлик размером 55Мб копирнуло за 10секунд, и это - на САТА2 винчестерах, где скорость - 40Мб/с :(
    А если еще расскоментировать код, отвечающий за внешний вид программы во время копирования, то вообще этот файл копирует за минуту :(
  • andreil © (18.03.08 12:29) [4]
    Чуть не забыл сказать - у программы есть одно небольшое ограничение - чтение/запись происходят кусками по 8Кб, иначе нельзя, тк файл может быть фрагментирован. Например, раньше читалось по 521Кб, скорость была максимальная, но если попадался фрагментированный GCF-архив, из которого файлы и читаются, то стразу файлы поганятся, тк оказывается, что один кусок брали отсюда, а другой - оттуда, а надо было с третьего места :(
 
Конференция "KOL" » Организовать правильную работу с потоками... [Delphi, Windows]
Есть новые Нет новых   [134435   +34][b:0][p:0]