Ignore:
Timestamp:
Apr 17, 2017, 3:47:07 PM (7 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
4ae83a4b
Parents:
33e22da
Message:

Final version of the benchmark code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/generic_types/evaluation/c-bench.c

    r33e22da rc87cd93  
    3434}
    3535
    36 int cmp_char( const void* a, const void* b ) {
    37         return *(const char*)a == *(const char*)b ? 0 : *(const char*)a < *(const char*)b ? -1 : 1; /***/
     36int cmp_char( const void* a, const void* b ) { /***/
     37        return *(const char*)a == *(const char*)b ? 0 : *(const char*)a < *(const char*)b ? -1 : 1;
    3838}
    3939
    4040int main(int argc, char** argv) {
    41         FILE* out = fopen("c-out.txt", "w");
    42         int max = 0;
    43         struct stack s = new_stack(), t;
    44         REPEAT_TIMED( "push_int", push_stack(&s, new_int( _i )); )
    45         TIMED( "copy_int",      copy_stack(&t, &s, copy_int); /***/ )
    46         TIMED( "clear_int", clear_stack(&s, free); /***/ )
    47         REPEAT_TIMED( "pop_int",
    48                 int* x = pop_stack(&t); /***/
    49                 if ( *x > max ) { max = *x; }
    50                 free(x); )
    51         REPEAT_N_TIMED( "print_int", N/2, print( out, "dsds", _i, ":", _i, "\n" ); /***/ )
     41        FILE * out = fopen("c-out.txt", "w");
     42        int maxi = 0, vali = 42;
     43        struct stack si = new_stack(), ti;
    5244
    53         struct pair* max2 = new_pair( new_bool(0), new_char('\0') );
    54         struct stack s2 = new_stack(), t2;
     45        REPEAT_TIMED( "push_int", N, push_stack( &si, new_int( vali ) ); )
     46        TIMED( "copy_int",      copy_stack( &ti, &si, copy_int ); /***/ )
     47        TIMED( "clear_int", clear_stack( &si, free ); /***/ )
     48        REPEAT_TIMED( "pop_int", N,
     49                int* xi = pop_stack( &ti );
     50                if ( *xi > maxi ) { maxi = *xi; }
     51                free(xi); )
     52        REPEAT_TIMED( "print_int", N/2, print( out, "dsds", vali, ":", vali, "\n" ); /***/ )
    5553
    56         REPEAT_TIMED( "push_bool_char",
    57                 push_stack(&s2, new_pair( new_bool( _i & 0x1 ), new_char( _i & 0x7F ) )); )
    58         TIMED( "copy_bool_char", copy_stack(&t2, &s2, copy_pair_bool_char); /***/ )
    59         TIMED( "clear_bool_char", clear_stack(&s2, free_pair_bool_char); /***/ )
    60         REPEAT_TIMED( "pop_bool_char",
    61                 struct pair* x = pop_stack(&t2); /***/
    62                 if ( cmp_pair( x, max2, cmp_bool, cmp_char ) > 0 ) { /***/
    63                         free_pair_bool_char( max2 ); /***/
    64                         max2 = x;
     54        struct pair * maxp = new_pair( new_bool(0), new_char('\0') ),
     55                * valp = new_pair( new_bool(1), new_char('a') );
     56        struct stack sp = new_stack(), tp;
     57
     58        REPEAT_TIMED( "push_pair", N, push_stack( &sp, copy_pair_bool_char( valp ) ); )
     59        TIMED( "copy_pair", copy_stack( &tp, &sp, copy_pair_bool_char ); /***/ )
     60        TIMED( "clear_pair", clear_stack( &sp, free_pair_bool_char ); /***/ )
     61        REPEAT_TIMED( "pop_pair", N,
     62                struct pair * xp = pop_stack( &tp );
     63                if ( cmp_pair( xp, maxp, cmp_bool, cmp_char /***/ ) > 0 ) {
     64                        free_pair_bool_char( maxp ); /***/
     65                        maxp = xp;
    6566                } else {
    66                         free_pair_bool_char( x ); /***/
     67                        free_pair_bool_char( xp ); /***/
    6768                } )
    68         REPEAT_N_TIMED( "print_pair", N/2,
    69                 struct pair p1 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) }); /***/
    70                 struct pair p2 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) }); /***/
    71                 print( out, "pbcspbcs", p1, ":", p2, "\n" ); /***/
    72                 free(p1.first); free(p1.second); /***/
    73                 free(p2.first); free(p2.second); /***/ )
    74         free_pair_bool_char( max2 ); /***/
     69        REPEAT_TIMED( "print_pair", N/2, print( out, "pbcspbcs", *valp, ":", *valp, "\n" ); /***/ )
     70        free_pair_bool_char( maxp ); /***/
     71        free_pair_bool_char( valp ); /***/
    7572        fclose(out);
    7673}
Note: See TracChangeset for help on using the changeset viewer.