Gmane
From: Alex Vinokur <alexvn <at> connect.to>
Subject: [Raw Run Log] Simple C/C++ Perfometer : Copying Files
Newsgroups: gmane.comp.lang.c++.perfometer
Date: 2004-04-20 09:59:56 GMT (4 years, 20 weeks, 23 hours and 23 minutes ago)

        ===============================
        Copying files : input to output
        ===============================

        C/C++ Performance Tests
        =======================
        Using Simple C/C++ Perfometer (Copying Files), Version CF-1.4
        http://article.gmane.org/gmane.comp.lang.c++.perfometer/44

    Environment
    -----------
    Windows 2000 Professional
    Intel(R) Celeron(R) CPU 1.70 GHz

    Compiler
    ---------
    * GNU g++ 3.3.1 (CYGWIN); DLLs : cygwin1.dll, kernel32.dll, ntdll.dll

    Test file sizes : 1000, 0000
    ----------------------------

    Test file modes : text, binary
    ------------------------------

    Testsuites
    ----------
    C-01      : Functions getc() and putc()
    C-02      : Functions fgetc() and fputc()
    C-03      : Functions fread() and fwrite()
    UNIX-C-04 : Function mmap
    CPP-01    : Operators >> and <<
    CPP-02    : Methods get() and put()
    CPP-03    : Methods sbumpc() and sputc()
    CPP-04    : Method sbumpc() and operator <<
    CPP-05    : Method rdbuf() and operator <<
    CPP-06    : Methods read() and write() with const buffer
    CPP-07    : Methods read() and write() with max buffer
    CPP-08    : Method getline
    CPP-09    : Method ifstream getline
    CPP-10    : Method iterators (istream_iterator, ostream_iterator)

===================== Methods of copying : BEGIN =====================

ifstream in_fs;
ofstream out_fs;

FILE*  in_fp;
FILE*  out_fp;

int  in_fd;    // For UNIX only
int  out_fd;   // For UNIX only

char ch;
int  ich;

char   buf[4096];
size_t nread;

char* mbuf = new char [file_size];

    ### Method C-01 : Functions getc() and putc()
    -----------------------------------------------------
    while ((ich = getc(in_fp)) != EOF) putc(ich, out_fp);
    -----------------------------------------------------

    ### Method C-02 : Functions fgetc() and fputc()
    -------------------------------------------------------
    while ((ich = fgetc(in_fp)) != EOF) fputc(ich, out_fp);
    -------------------------------------------------------

    ### Method C-03 : Functions fread() and fwrite()
    -------------------------------------------------------
    while ((nread = fread(buf, sizeof(char), sizeof(buf), in_fp)) > 0)
    {
      fwrite(buf, sizeof(char), nread, out_fp);
    }
    -------------------------------------------------------

    ### Method UNIX-C-04 : Function mmap
    -------------------------------------------------------
    char* ptr = (char*)mmap(0, file_size, PROT_READ, MAP_SHARED, fd_in, 0);
    assert (ptr != MAP_FAILED);
    write(fd_out, ptr, file_size);
    munmap(ptr, file_size);
    -------------------------------------------------------

    ### Method CPP-01 : Operators >> and <<
    ---------------------------------
    in_fs.unsetf(ios::skipws);
    while (in_fs >> ch) out_fs << ch;
    ---------------------------------

    ### Method CPP-02 : Methods get() and put()
    -------------------------------------
    while (in_fs.get(ch)) out_fs.put(ch);
    -------------------------------------

    ### Method CPP-03 : Methods sbumpc() and sputc()
    ------------------------------------------------------------------------
    while ((ch = in_fs.rdbuf()->sbumpc()) != EOF) out_fs.rdbuf()->sputc(ch);
    ------------------------------------------------------------------------

    ### Method CPP-04 : Method sbumpc() and operator <<
    -------------------------------
    ch = in_fs.rdbuf()->sbumpc();
    out_fs << ch;
    while (ch != EOF)
    {
      out_fs << in_fs.rdbuf();
      ch = in_fs.rdbuf()->sbumpc();
    }
    -------------------------------

    ### Method CPP-05 : Method rdbuf() and operator <<
    ------------------------
    out_fs << in_fs.rdbuf();
    ------------------------

    ### Method CPP-06 : Methods read() and write() with const buffer
    ------------------------
    while (!in_fs.eof())
    {
      in_fs.read (buf, sizeof(buf));
      out_fs.write (buf,in_fs.gcount());
    }
    ------------------------

    ### Method CPP-07 : Methods read() and write() with max buffer
    ------------------------
    in_fs.read   (mbuf, file_size);
    out_fs.write (mbuf, file_size);
    ------------------------

    ### Method CPP-08 : Method getline
    ------------------------
    while (getline (fs_in, line)) fs_out << line << '\n';
    ------------------------

    ### Method CPP-09 : Method ifstream getline
    ------------------------
    while (fs_in.getline (buffer, sizeof(buffer))) fs_out << buffer << '\n';
    ------------------------

    ### Method CPP-10 : Method iterators (istream_iterator, ostream_iterator)
    ------------------------
    fs_in >> noskipws;
    istream_iterator<char> in(fs_in), eos;
    ostream_iterator<char> out(fs_out);
    copy (in, eos, out);
    ------------------------

===================== Methods of copying : END =======================

================ Performance tests : BEGIN ================

################
File size = 1000
################

=======================================
Simple C/C++ Perfometer : Copying files
Version CF-1.4
=======================================

----------------------
GNU gcc 3.3.1 (CYGWIN)
----------------------

 YOUR COMMAND LINE : a 1000 5 730 3

 ### File size             : 1000
 ### Number of runs        : 3
 ### Number of tests       : 5
 ### Number of repetitions : 730
 ### CLOCKS_PER_SEC        : 1000

   Run-1 of 3 : Started .....
C_01_txt__functions_getc_putc                 :     50 units (0.050 secs)
C_01_bin__functions_getc_putc                 :     40 units (0.040 secs)
C_02_txt__functions_fgetc_fputc               :     46 units (0.046 secs)
C_02_bin__functions_fgetc_fputc               :     40 units (0.040 secs)
C_03_txt__functions_fread_fwrite              :     46 units (0.046 secs)
C_03_bin__functions_fread_fwrite              :     16 units (0.016 secs)
unix_C_04_txt__mmap                           :     73 units (0.073 secs)
cpp_01_txt__operators_in_out                  :   2066 units (2.066 secs)
cpp_01_bin__operators_in_out                  :   1926 units (1.926 secs)
cpp_02_txt__methods_get_put                   :   1131 units (1.131 secs)
cpp_02_bin__methods_get_put                   :    935 units (0.935 secs)
cpp_03_txt__methods_sbumpc_sputc              :     93 units (0.093 secs)
cpp_03_bin__methods_sbumpc_sputc              :     70 units (0.070 secs)
cpp_04_txt__method_sbumpc__op_out             :     53 units (0.053 secs)
cpp_04_bin__method_sbumpc__op_out             :     30 units (0.030 secs)
cpp_05_txt__method_rdbuf__op_out              :     53 units (0.053 secs)
cpp_05_bin__method_rdbuf__op_out              :     23 units (0.023 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :     60 units (0.060 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :     30 units (0.030 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :     53 units (0.053 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :     23 units (0.023 secs)
cpp_08_txt__method_getline                    :   1011 units (1.011 secs)
cpp_08_bin__method_getline                    :    974 units (0.974 secs)
cpp_09_txt__method_ifstream_getline           :    123 units (0.123 secs)
cpp_09_bin__method_ifstream_getline           :     70 units (0.070 secs)
cpp_10_txt__iterators                         :   2080 units (2.080 secs)
cpp_10_bin__iterators                         :   2086 units (2.086 secs)
   Run-1 of 3 : Finished

   Run-2 of 3 : Started .....
C_01_txt__functions_getc_putc                 :    113 units (0.113 secs)
C_01_bin__functions_getc_putc                 :    100 units (0.100 secs)
C_02_txt__functions_fgetc_fputc               :    110 units (0.110 secs)
C_02_bin__functions_fgetc_fputc               :    103 units (0.103 secs)
C_03_txt__functions_fread_fwrite              :     97 units (0.097 secs)
C_03_bin__functions_fread_fwrite              :     50 units (0.050 secs)
unix_C_04_txt__mmap                           :    176 units (0.176 secs)
cpp_01_txt__operators_in_out                  :   4977 units (4.977 secs)
cpp_01_bin__operators_in_out                  :   4573 units (4.573 secs)
cpp_02_txt__methods_get_put                   :   2723 units (2.723 secs)
cpp_02_bin__methods_get_put                   :   2320 units (2.320 secs)
cpp_03_txt__methods_sbumpc_sputc              :    240 units (0.240 secs)
cpp_03_bin__methods_sbumpc_sputc              :    176 units (0.176 secs)
cpp_04_txt__method_sbumpc__op_out             :    113 units (0.113 secs)
cpp_04_bin__method_sbumpc__op_out             :     70 units (0.070 secs)
cpp_05_txt__method_rdbuf__op_out              :    134 units (0.134 secs)
cpp_05_bin__method_rdbuf__op_out              :     70 units (0.070 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :    146 units (0.146 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :     66 units (0.066 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :    140 units (0.140 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :     63 units (0.063 secs)
cpp_08_txt__method_getline                    :   2467 units (2.467 secs)
cpp_08_bin__method_getline                    :   2397 units (2.397 secs)
cpp_09_txt__method_ifstream_getline           :    253 units (0.253 secs)
cpp_09_bin__method_ifstream_getline           :    196 units (0.196 secs)
cpp_10_txt__iterators                         :   5007 units (5.007 secs)
cpp_10_bin__iterators                         :   4920 units (4.920 secs)
   Run-2 of 3 : Finished

   Run-3 of 3 : Started .....
C_01_txt__functions_getc_putc                 :     73 units (0.073 secs)
C_01_bin__functions_getc_putc                 :     60 units (0.060 secs)
C_02_txt__functions_fgetc_fputc               :     73 units (0.073 secs)
C_02_bin__functions_fgetc_fputc               :     60 units (0.060 secs)
C_03_txt__functions_fread_fwrite              :     63 units (0.063 secs)
C_03_bin__functions_fread_fwrite              :     33 units (0.033 secs)
unix_C_04_txt__mmap                           :    113 units (0.113 secs)
cpp_01_txt__operators_in_out                  :   2984 units (2.984 secs)
cpp_01_bin__operators_in_out                  :   2767 units (2.767 secs)
cpp_02_txt__methods_get_put                   :   1655 units (1.655 secs)
cpp_02_bin__methods_get_put                   :   1379 units (1.379 secs)
cpp_03_txt__methods_sbumpc_sputc              :    143 units (0.143 secs)
cpp_03_bin__methods_sbumpc_sputc              :    107 units (0.107 secs)
cpp_04_txt__method_sbumpc__op_out             :     86 units (0.086 secs)
cpp_04_bin__method_sbumpc__op_out             :     43 units (0.043 secs)
cpp_05_txt__method_rdbuf__op_out              :     73 units (0.073 secs)
cpp_05_bin__method_rdbuf__op_out              :     43 units (0.043 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :     90 units (0.090 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :     46 units (0.046 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :     80 units (0.080 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :     36 units (0.036 secs)
cpp_08_txt__method_getline                    :   1455 units (1.455 secs)
cpp_08_bin__method_getline                    :   1466 units (1.466 secs)
cpp_09_txt__method_ifstream_getline           :    170 units (0.170 secs)
cpp_09_bin__method_ifstream_getline           :    113 units (0.113 secs)
cpp_10_txt__iterators                         :   2971 units (2.971 secs)
cpp_10_bin__iterators                         :   3344 units (3.344 secs)
   Run-3 of 3 : Finished

#################
File size = 10000
#################

=======================================
Simple C/C++ Perfometer : Copying files
Version CF-1.4
=======================================

----------------------
GNU gcc 3.3.1 (CYGWIN)
----------------------

 YOUR COMMAND LINE : a 10000 5 730 3

 ### File size             : 10000
 ### Number of runs        : 3
 ### Number of tests       : 5
 ### Number of repetitions : 730
 ### CLOCKS_PER_SEC        : 1000

   Run-1 of 3 : Started .....
C_01_txt__functions_getc_putc                 :    363 units (0.363 secs)
C_01_bin__functions_getc_putc                 :    310 units (0.310 secs)
C_02_txt__functions_fgetc_fputc               :    377 units (0.377 secs)
C_02_bin__functions_fgetc_fputc               :    310 units (0.310 secs)
C_03_txt__functions_fread_fwrite              :    303 units (0.303 secs)
C_03_bin__functions_fread_fwrite              :     83 units (0.083 secs)
unix_C_04_txt__mmap                           :    143 units (0.143 secs)
cpp_01_txt__operators_in_out                  :  27826 units (27.826 secs)
cpp_01_bin__operators_in_out                  :  41225 units (41.225 secs)
cpp_02_txt__methods_get_put                   :  26962 units (26.962 secs)
cpp_02_bin__methods_get_put                   :  22545 units (22.545 secs)
cpp_03_txt__methods_sbumpc_sputc              :   2163 units (2.163 secs)
cpp_03_bin__methods_sbumpc_sputc              :   1488 units (1.488 secs)
cpp_04_txt__method_sbumpc__op_out             :   1044 units (1.044 secs)
cpp_04_bin__method_sbumpc__op_out             :    354 units (0.354 secs)
cpp_05_txt__method_rdbuf__op_out              :   1041 units (1.041 secs)
cpp_05_bin__method_rdbuf__op_out              :    340 units (0.340 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :   1075 units (1.075 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :    360 units (0.360 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :   1068 units (1.068 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :    364 units (0.364 secs)
cpp_08_txt__method_getline                    :  16717 units (16.717 secs)
cpp_08_bin__method_getline                    :  15629 units (15.629 secs)
cpp_09_txt__method_ifstream_getline           :   1649 units (1.649 secs)
cpp_09_bin__method_ifstream_getline           :    954 units (0.954 secs)
cpp_10_txt__iterators                         :  39927 units (39.927 secs)
cpp_10_bin__iterators                         :  45151 units (45.151 secs)
   Run-1 of 3 : Finished

   Run-2 of 3 : Started .....
C_01_txt__functions_getc_putc                 :    921 units (0.921 secs)
C_01_bin__functions_getc_putc                 :    831 units (0.831 secs)
C_02_txt__functions_fgetc_fputc               :    954 units (0.954 secs)
C_02_bin__functions_fgetc_fputc               :    814 units (0.814 secs)
C_03_txt__functions_fread_fwrite              :    805 units (0.805 secs)
C_03_bin__functions_fread_fwrite              :    230 units (0.230 secs)
unix_C_04_txt__mmap                           :    404 units (0.404 secs)
cpp_01_txt__operators_in_out                  :  50058 units (50.058 secs)
cpp_01_bin__operators_in_out                  :  44247 units (44.247 secs)
cpp_02_txt__methods_get_put                   :  26428 units (26.428 secs)
cpp_02_bin__methods_get_put                   :  21714 units (21.714 secs)
cpp_03_txt__methods_sbumpc_sputc              :   2043 units (2.043 secs)
cpp_03_bin__methods_sbumpc_sputc              :   1478 units (1.478 secs)
cpp_04_txt__method_sbumpc__op_out             :   1015 units (1.015 secs)
cpp_04_bin__method_sbumpc__op_out             :    340 units (0.340 secs)
cpp_05_txt__method_rdbuf__op_out              :   1001 units (1.001 secs)
cpp_05_bin__method_rdbuf__op_out              :    344 units (0.344 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :   1071 units (1.071 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :    357 units (0.357 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :   1048 units (1.048 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :    344 units (0.344 secs)
cpp_08_txt__method_getline                    :  16206 units (16.206 secs)
cpp_08_bin__method_getline                    :  13099 units (13.099 secs)
cpp_09_txt__method_ifstream_getline           :   1024 units (1.024 secs)
cpp_09_bin__method_ifstream_getline           :    570 units (0.570 secs)
cpp_10_txt__iterators                         :  26842 units (26.842 secs)
cpp_10_bin__iterators                         :  35057 units (35.057 secs)
   Run-2 of 3 : Finished

   Run-3 of 3 : Started .....
C_01_txt__functions_getc_putc                 :    874 units (0.874 secs)
C_01_bin__functions_getc_putc                 :    754 units (0.754 secs)
C_02_txt__functions_fgetc_fputc               :    877 units (0.877 secs)
C_02_bin__functions_fgetc_fputc               :    804 units (0.804 secs)
C_03_txt__functions_fread_fwrite              :    781 units (0.781 secs)
C_03_bin__functions_fread_fwrite              :    226 units (0.226 secs)
unix_C_04_txt__mmap                           :    388 units (0.388 secs)
cpp_01_txt__operators_in_out                  :  47234 units (47.234 secs)
cpp_01_bin__operators_in_out                  :  41560 units (41.560 secs)
cpp_02_txt__methods_get_put                   :  18322 units (18.322 secs)
cpp_02_bin__methods_get_put                   :  12578 units (12.578 secs)
cpp_03_txt__methods_sbumpc_sputc              :   1144 units (1.144 secs)
cpp_03_bin__methods_sbumpc_sputc              :    825 units (0.825 secs)
cpp_04_txt__method_sbumpc__op_out             :    543 units (0.543 secs)
cpp_04_bin__method_sbumpc__op_out             :    183 units (0.183 secs)
cpp_05_txt__method_rdbuf__op_out              :    547 units (0.547 secs)
cpp_05_bin__method_rdbuf__op_out              :    176 units (0.176 secs)
cpp_06_txt__methods_cpp_read_write__const_buf :    571 units (0.571 secs)
cpp_06_bin__methods_cpp_read_write__const_buf :    196 units (0.196 secs)
cpp_07_txt__methods_cpp_read_write__max_buf   :    557 units (0.557 secs)
cpp_07_bin__methods_cpp_read_write__max_buf   :    176 units (0.176 secs)
cpp_08_txt__method_getline                    :  11707 units (11.707 secs)
cpp_08_bin__method_getline                    :  12478 units (12.478 secs)
cpp_09_txt__method_ifstream_getline           :   1565 units (1.565 secs)
cpp_09_bin__method_ifstream_getline           :    854 units (0.854 secs)
cpp_10_txt__iterators                         :  46417 units (46.417 secs)
cpp_10_bin__iterators                         :  46182 units (46.182 secs)
   Run-3 of 3 : Finished

================ Performance tests : END ==================

--
   Alex Vinokur
     mailto:alexvn <at> connect.to
     http://mathforum.org/library/view/10978.html

-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click