Printing to the console vs writing to a file (speed)

后端 未结 4 999
执笔经年
执笔经年 2020-12-16 13:36

In C++, which would be faster if repeated, say, 5000 times:

cout << \"text!\" << endl;

or

my_text_file <<         


        
4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-16 14:08

    It's not that much faster...

    A test of 1 million couts with endl (clear buffer):

    Results:

    console cout time: 2.87001
    file cout time: 2.33776
    

    Code:

    class Timer
    {
            struct timespec startTime, endTime;
            double sec;
    public:
            void start();
            void stop();
            double getSec();
    };
    
    void Timer::start()
    {
            clock_gettime(CLOCK_MONOTONIC, &startTime);
    }
    void Timer::stop()
    {
            clock_gettime(CLOCK_MONOTONIC, &endTime);
            sec = (endTime.tv_sec - startTime.tv_sec);
            sec += (endTime.tv_nsec - startTime.tv_nsec) / 1000000000.0;
    }
    double Timer::getSec()
    {
            return sec;
    }
    
    
    int main(){
            int ntests = 1000000;
            Timer t1 = Timer(), t2 = Timer();
    
            t1.start();
            for(int c=0;c

    Build and run:

    g++ test.cpp -o test -lrt && ./test && rm out.txt
    

提交回复
热议问题