我需要编写一个程序,它将在输出文件中写入许多字符.我的程序还需要编写换行符以便更好地格式化.我理解ofstream是一个缓冲流,如果我们使用缓冲流文件io,我们获得了性能.但是,如果我们使用std::endl输出将被刷新,并且由于缓冲输出,我们将失去任何潜在的性能增益.
我想如果我使用'\n'新行,输出将只在我们将要刷新时刷新std::endl.它是否正确?是否有任何技巧可用于在文件输出期间获得性能提升?
注意:我想在文件写入操作完成时刷新缓冲输出.我认为通过这种方式,我可以最小化文件I/O,从而获得性能.
我必须解码一些字节数组(原始数据).它可以包含基本数据类型(int,unsigned int,char,short等).根据定义的结构,我需要解释它们.以下是示例:
struct testData
{
int a;
char c;
};
unsigned char** buf = {0x01,0x00,0x00,0x00,0x41}
example byte array(in little endian) : 0100000041
should give decoding like : a = 1, c = 'A'
Run Code Online (Sandbox Code Playgroud)
样本数据可能非常大,样本结构(例如testData)可以包含200-3000个字段.如果我使用am cast从**buf中读取相应的数据并设置如下所示的指针:
int a = *(reinterpret_cast<int*>(*buf);
*buf += 4;
char c = **buf;
*buf += 1;
Run Code Online (Sandbox Code Playgroud)
如果需要解码的文件数很高,我的CPU使用率会很高.例:
struct testData
{
int element1;
char element2;
int element3;
... ...
... ...
short element200;
char element201;
char element202;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法减少CPU负载并保持解码速度非常快?
我有两个限制: