![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как быстро записывать побайтно в файл?
Вася © (2013-11-19 14:24:00)Вот кусок процедуры:
assignfile(flb,currpath+f_GrayTMP);
reset(flb);
Seek(flb, 1078);
count:=image1.Picture.Bitmap.Width*image1.Picture.Bitmap.Height;
pix_p:=image1.Picture.Bitmap.RawImage.data;
if image1.Picture.Bitmap.pixelformat=pf32bit then
begin
pix4out:=pix_p;
inc(pix4out, count);
repeat
write(flb, pix4out^.rgbRed);
dec(pix4out);
dec(count);
until count<=0;
end;
очень медленно пишет в файл (файл 800 кб секунды 3-4).
как ускорить?
использую FPC 2.6, но думаю проблема не в компиляторе, а в подходе
Вася (2013-11-19 15:59:00) [21]
> count после цикла чему равен?
точно, спасибо :)
MBo (2013-11-19 15:56:00) [22]count после цикла чему равен?
А вообще здесь цикл for лучше подойдёт
Palladin (2013-11-19 15:47:00) [23]reset(flb);
у reset есть второй параметр
Вася (2013-11-19 15:46:00) [24]переделал на массив,
BlockWrite(flb, pix_map[0], sizeof(pix_map[0])*count);ничего в файл не записывает :(
assignfile(flb,currpath+f_GrayTMP);
reset(flb);
Seek(flb, 1078);
count:=image1.Picture.Bitmap.Width*image1.Picture.Bitmap.Height;
setlength(pix_map,count);
i:=0;
pix_p:=image1.Picture.Bitmap.RawImage.data;
if image1.Picture.Bitmap.pixelformat=pf32bit then
begin
pix4out:=pix_p;
inc(pix4out, count);
repeat
pix_map[i]:=pix4out^.rgbRed;
dec(pix4out);
dec(count);
inc(i);
until count<=0;
end;
BlockWrite(flb, pix_map[0], sizeof(pix_map[0])*count);
closefile(flb);
DevilDevil (2013-11-19 14:45:00) [25]ну или да
сначала создай кусок памяти 800кб, потом заполни его, потом запиши в файл
DevilDevil (2013-11-19 14:32:00) [26]http://sourceforge.net/projects/cachedbuffers/
MBo (2013-11-19 14:29:00) [27]Похоже, что код записывает в файл перевернутый кусок памяти. Для скорости лучше перевернуть его в массиве, потом массив целиком записать в файл - большие куски пишутся быстрее.
Вася (2013-11-19 14:29:00) [28]Массивом?
Медвешоног Порожок (2013-11-19 14:28:00) [29]побайтно не быстро.
быстро не побайтно