Russian Qt Forum

Qt => Общие вопросы => Тема начата: truetrup от Ноябрь 11, 2011, 21:39



Название: Низкая скорость записи в файл.
Отправлено: truetrup от Ноябрь 11, 2011, 21:39
Имеется программа переписывающая содержание файла нулями вот код:
Код:
QFile file1(filename);
    file1.open(QIODevice::ReadWrite);
    char ch=qint16(0);
    int i;
    for (i=1;i!=file1.size();i++){
        file1.write(&ch,sizeof(ch));}
    file1.close();
Проблема заключается в очень низкой скорости записи в файл... Может кто-нибудь подскажет как ускорить процесс записи? Заранее благодарен.


Название: Re: Низкая скорость записи в файл.
Отправлено: BRE от Ноябрь 11, 2011, 21:43
Попробуй записывать блоками.
Определи QByteArray размером скажем 64 Кб, залей его 0 и записывай сразу блоками по 64 Кб.


Название: Re: Низкая скорость записи в файл.
Отправлено: andrew.k от Ноябрь 11, 2011, 23:41
Не про скорость, а так.
int маловато для размера файла.
quint64.

И третья строка смешная) зачем приводить ноль к quint16, чтобы потом присвоить его в char?


Название: Re: Низкая скорость записи в файл.
Отправлено: kambala от Ноябрь 11, 2011, 23:46
может проще просто пересоздать файл (т.е. открыть для записи) и применить QFile::resize()?


Название: Re: Низкая скорость записи в файл.
Отправлено: truetrup от Ноябрь 14, 2011, 21:01
2BRE:
Благодарю, примерно так и сделал, только размер взял в 4 кб, как раз под размер кластера...
2andrew.k:
Действительно чушь какуюто сотворил=)
2kambala:
Стоит попробовать изменить размер на меньший, а потом вернуть к исходному и посмотреть что в нем будет...