2008年6月19日 星期四

[C] IO 處理測試 - fopen with "w" or "a"

    結論:

        沒事不要 truncate !

        若一天有 80 萬封信且九成是 spam mail
        代表一天 86400 秒  =>  平均 1秒需處理約 10 次動作

        目前若採用 truncating

            FreeBSD 6.2-RELEASE-p1
            Intel(R) Pentium(R) 4 CPU 3.00GHz (2992.51-MHz 686-class CPU)
            1GB Ram

        25000 次花費近 120 秒  =>  1秒可處理 200 次
        這個數字不曉得撐不撐得住最大量的時候  :P

        若改掉的話
        25000 次僅需 0.46 秒  => 1 秒可處理 54347 次
    =======================================================
    @ code 1 : fopen with "w"
    int main()
    {
            int i;
            FILE * fd;
            for( i=0; i< 25000 ; i++ )
            {
                    fd = fopen( "t_d.txt" , "w" );
                    fprintf(fd,"%d\n",i);
                    fclose( fd );
            }
            return 0;
    }
    # time ./a.out
    0.127u 1.589s 1:57.61 1.4%      5+177k 0+25000io 0pf+0w
    ======================================================
    @ code 2 : fopen with "a"
    int main()
    {
            int i;
            FILE * fd;
            for( i=0; i< 25000 ; i++ )
            {
                    fd = fopen( "t_d.txt" , "a" );
                    fprintf(fd,"%d\n",i);
                    fclose( fd );
            }
            return 0;
    }
    # time ./a.out
    0.052u 0.410s 0:00.46 100.0%    5+188k 0+0io 0pf+0w
    ======================================================

--
    觀看硬體資訊:
    # cat /var/run/dmesg.boot
    還在只靠 dmesg -a 已經落伍了  XD


沒有留言:

張貼留言