小编lea*_*ack的帖子

使用ofstream进行缓冲文本输出以获得性能

我需要编写一个程序,它将在输出文件中写入许多字符.我的程序还需要编写换行符以便更好地格式化.我理解ofstream是一个缓冲流,如果我们使用缓冲流文件io,我们获得了性能.但是,如果我们使用std::endl输出将被刷新,并且由于缓冲输出,我们将失去任何潜在的性能增益.

我想如果我使用'\n'新行,输出将只在我们将要刷新时刷新std::endl.它是否正确?是否有任何技巧可用于在文件输出期间获得性能提升?

注意:我想在文件写入操作完成时刷新缓冲输出.我认为通过这种方式,我可以最小化文件I/O,从而获得性能.

c++ performance file-io

9
推荐指数
1
解决办法
9989
查看次数

如何降低CPU使用率?

我必须解码一些字节数组(原始数据).它可以包含基本数据类型(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负载并保持解码速度非常快?

我有两个限制:

  1. "结构可以包含填充字节."
  2. 我无法控制如何定义结构.结构也可以包含嵌套元素.

c++ performance cpu-usage

1
推荐指数
1
解决办法
809
查看次数

标签 统计

c++ ×2

performance ×2

cpu-usage ×1

file-io ×1