小编yig*_*alk的帖子

c ++ cout重定向到文件比使用ofstream慢

我有一个应用程序,必须遍历每个字符(以检查某些特殊情况),然后使用ostream put方法将其写入流中。

当将ostream *指向文件流时,它的执行速度比ostream *指向重定向到文件的cout时快得多。

在这个(/sf/answers/118853451/)答案中,我看到使用fstream的可能会更快,因为与cout相比,缓冲多了一层。我以为,当我知道输出将要输出到cout时,我可以遍历字符串缓冲区,当缓冲区已满时,将其附加到cout。这样,我可以获得另一层缓冲,性能将会提高。

因此,我在这里进行了测试,以编写3200万行,每行是一个十个字符的字符串。我使用cout,fstream和stringbuffer编写它们,后来将它们附加到cout。


void print_to_ostream(ostream *out, string& ones)
{
    for (int i = 0; i < 32000000; ++i){

            const char* ones_char = ones.c_str();
            for (int j = 0; j < ones.size(); ++j ){
                out->put(ones_char[j]);
            }
        }
}

int main(void){
    string ones ="1111111111";


    ostream *out = &cout;
    size_t cout_time = 0;
    size_t file_time = 0;
    size_t cout_buffered_time = 0;

    // print cout using ostream
    mono_tick_timer time;
    print_to_ostream(out, ones);
    cout_time += time.tick();

    // write to file …
Run Code Online (Sandbox Code Playgroud)

c++ cout ostream

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

标签 统计

c++ ×1

cout ×1

ostream ×1