performance - What's the best way of implementing a buffer of fixed size when using fread in C++? -
performance - What's the best way of implementing a buffer of fixed size when using fread in C++? -
suppose have file of integers , want read them 1 one.
you have 2 options buffering.
declare array buffer of size n , utilize setvbuf tell fread buffer use. when calling function fread read integer write fread(&myint, sizeof(myint), 1, inputfile);
declare same array buffer time don't utilize function setvbuf. instead work on buffering yourself. phone call fread(buffer, buffersize*sizeof(int), 1, inputfile)
from understanding setvbuf exists create life easier, come @ cost? method utilize in terms of performance?
i utilize neither of examples. don't think part of i/o performance bottleneck.
the vbuf area input routine place info before putting destination. used cache or preformatting buffer.
most of time, i/o bottlenecks related quantity of info fetched , number of fetches. example, reading 1 byte @ time less efficient reading block of bytes.
another i/o related bottleneck duration between input requests. i/o devices prefer maintain streaming data, non-stop. input devices, hard drives, have overhead time between when request received , when info starts transmitting. hard drives, disk speed time.
your best performance not waste development time messing c or c++ libraries. need utilize hardware assist. platforms have device called direct memory access controller (dma). device can take info input source , deliver memory without using cpu. cpu can executing instructions while dma transferring data. in order utilize hardware assistance, need write code @ os driver level, or access os drivers directly.
the c , c++ i/o libraries designed platform independent concept called streams. there may execution overhead associated (such buffering). if don't care different platforms, access os drivers directly.
don't waste time messing c , c++ libraries. not much performance gain there. more performance lies in accessing os drivers straight (or using own). how , when access i/o show bigger performance gains tweaking c , c++ libraries.
lastly, using processors info cache gain performance too.
c++ performance fread
Comments
Post a Comment