На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Embarcadero C++ Builder, функция FileOpen, время открытия файла , Некоторые файлы открываются по несколько секунд
    Написал программу, связанную с каталогизацией файлов на жестком диске. Файлы ищутся с помощью функций FindFirst и FindNext. Затем я открываю каждый найденный файл, читаю из него маленький фрагмент (1024 байта) и аккуратно закрываю файл. Так вот, обнаружилось, что большинство файлов открываются нормально, но некоторые (замечено за некоторыми файлами EXE и PDF) открываются по нескольку секунд! Фрагмент текста, которым это было установлено:

    ExpandedWrap disabled
      t1=GetTime();                                     //Опрашиваю "системные часы"
      MyTmp=FileOpen(FN,fmOpenRead | fmShareDenyNone);  //Открываю файл с именем FN для чтения (имя FN формируется в соответствии с FindNext)
      t2=GetTime();                                     //Повторно опрашиваю системные часы
      __int64 t3;
      t3=MilliSecondsBetween(t2,t1);                    //Оцениваю время в миллисекундах, ушедшее на открытие файла
      if (t3>10000)                                     //Если это время превосходит 10 секунд
        {
           UnicodeString ZZ;
           ZZ=t3;
           Memo2->Lines->Add(ZZ+FN);                    //помещаю значение времени и имя файла в табличку-отчет
        }


    Сначала обеспокоило, что индикация смены файлов затормаживается; заподозрил зависание программы и стал обвешивать отладочными маячками. Потом выяснил, что программа не зависает, а именно затормаживается с последующим возобновлением. Сужая область действия маячков сумел локализовать единственную строчку - операцию FileOpen. Отмечу, что во время каталогизации проблемные файлы не были открыты каким-то иным приложением.

    Вопрос: может быть, при открытии файла следует устанавливать какие-то другие атрибуты? Сталкивался ли кто-нибудь еще с подобной проблемой?
    Сообщение отредактировано: Qraizer -
      Вангую за драйвер-фильтр антивируса. Для проверки теории надо не просто отключить антивирь, а вообще удалить, т.к. сдаётся мне, что драйвера файловой системы так просто антивирь не отключает.
      Сообщение отредактировано: Gonarh -
        Спасибо! Мне это как-то не пришло в голову. Проверил, точно такая же задержка у этих файлов даже при простом копировании TotalCommander'ом. Придется просто смириться.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0197 ]   [ 17 queries used ]   [ Generated: 27.04.24, 03:59 GMT ]