調べたこと、作ったことをメモしています。
こちらに移行中: https://blog.shimazu.me/

freadとreadの速度差

tuple(100byte)のデータを1万個用意し、それを読み込む速度を測った。
なお、いつかの調査でgettimeofdayは最大数us程度ずれうるということがわかっている、が、あまり関係なさそう。
結論から言うと、freadでは2000us程度、readでは10000us程度かかっていた。


    struct timeval before, after;
    gettimeofday( &before, NULL );
    /* while( ( tmp = read( fileno( rp ), &tuple[ n ], sizeof( crs_tuple_t ) ) ) > 0 ) { */
    /*     n++; */
    /*     if ( bufsize <= n ) { */
    /*         tuple = ( crs_p_tuple_t ) myrealloc( tuple, sizeof( crs_tuple_t ) * bufsize * 2, "tuple" ); */
    /*         bufsize *= 2; */
    /*     } */
    /* } */
    while( ( tmp = fread( &tuple[ n ], sizeof( crs_tuple_t ), bufsize - n, rp ) ) > 0 ) {
        n += tmp;
        if ( bufsize <= n ) {
            tuple = ( crs_p_tuple_t ) myrealloc( tuple, sizeof( crs_tuple_t ) * bufsize * 2, "tuple" );
            bufsize *= 2;
        }
    }
    gettimeofday( &after, NULL );