PureBasic

FileBuffersSize()

Синтаксис

FileBuffersSize(#File , Size)

Описание


Изменяет размер буфера памяти (кэша), используемого для операций с файлом.

Параметры

#File Номер Файла, для операций с которым будет изменена буферизация. Если в качестве этого параметра будет использовано значение #PB_Default, то заданное по умолчанию значение размера буфера будет изменено на указанный размер 'Size', и все последующие вызовы функций OpenFile(), CreateFile() и ReadFile() будут использовать новое значение буфера.
Size Задаёт новый размер (в байтах) для буфера памяти. Если 'Size' равен нулю, то любое кэширование отключается и все операции записи пишут прямо на диск.

Возвращаемое значение

Ничего.

Комментарии

Из соображений производительности размер буфера должен быть достаточно большим (1024 выглядит минимально достаточным). Когда используются буферы, информация на самом деле пишется на диск только когда буфер кэша заполнен или когда файл закрывается. Функция FlushFileBuffers() заставляет записать буфер кэша в момент вызова функции. Размер буфера по умолчанию составляет 4 096 байтов на каждый файл.

Пример (Фран)

Fichier$=OpenFileRequester("Открыть файл", "", "", 0)
text$="FileBuffersSize() Результат:"+#CRLF$+"==============="+#CRLF$

TailleTampon=4096
While TailleTampon<1048577
    text$=text$+"Buffer: "+Str(TailleTampon)+#CRLF$

    If ReadFile(0, Fichier$)
        FileBuffersSize(0, TailleTampon) ; Изменение размера буфера
        start=ElapsedMilliseconds() ; Запуск секундомера

        While Eof(0)=#False        ; Чтение файла побайтно
            ReadByte(0)
        Wend
        stop=ElapsedMilliseconds() ; Стоп секундомера

        CloseFile(0)
    EndIf
    text$+"ReadByte: "+Str(stop-start)+#CRLF$+#CRLF$

    TailleTampon = TailleTampon*2 ; Увеличение буфера
Wend

MessageRequester("FileBuffersSize", text$) ; Просмотр

См. также

FlushFileBuffers()

Поддерживаемые OS

Все

<- Eof() - Оглавление File - FileID()->