Ignore:
Timestamp:
Apr 14, 2017, 4:51:13 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:
1504536, e3de500
Parents:
3895b8b5
Message:

Update benchmarks, cleanup edits to the evaluation section

File:
1 edited

Legend:

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

    r3895b8b5 r3fb7f5e  
    77
    88_Bool* new_bool( _Bool b ) {
    9         _Bool* q = malloc(sizeof(_Bool));
     9        _Bool* q = malloc(sizeof(_Bool)); /***/
    1010        *q = b;
    1111        return q;
     
    1313
    1414char* new_char( char c ) {
    15         char* q = malloc(sizeof(char));
     15        char* q = malloc(sizeof(char)); /***/
    1616        *q = c;
    1717        return q;
     
    1919
    2020int* new_int( int i ) {
    21         int* q = malloc(sizeof(int));
     21        int* q = malloc(sizeof(int)); /***/
    2222        *q = i;
    2323        return q;
    2424}
    2525
    26 void* copy_bool( const void* p ) { return new_bool( *(const _Bool*)p ); }
     26void* copy_bool( const void* p ) { return new_bool( *(const _Bool*)p ); } /***/
    2727
    28 void* copy_char( const void* p ) { return new_char( *(const char*)p ); }
     28void* copy_char( const void* p ) { return new_char( *(const char*)p ); } /***/
    2929
    30 void* copy_int( const void* p ) { return new_int( *(const int*)p ); }
     30void* copy_int( const void* p ) { return new_int( *(const int*)p ); } /***/
    3131
    32 void* copy_pair_bool_char( const void* p ) { return copy_pair( p, copy_bool, copy_char ); }
     32void* copy_pair_bool_char( const void* p ) { return copy_pair( p, copy_bool, copy_char ); } /***/
    3333
    34 void free_pair_bool_char( void* p ) { free_pair( p, free, free ); }
     34void free_pair_bool_char( void* p ) { free_pair( p, free, free ); } /***/
    3535
    3636int cmp_bool( const void* a, const void* b ) {
    37         return *(const _Bool*)a == *(const _Bool*)b ? 0 : *(const _Bool*)a < *(const _Bool*)b ? -1 : 1;
     37        return *(const _Bool*)a == *(const _Bool*)b ? 0 : *(const _Bool*)a < *(const _Bool*)b ? -1 : 1; /***/
    3838}
    3939
    4040int cmp_char( const void* a, const void* b ) {
    41         return *(const char*)a == *(const char*)b ? 0 : *(const char*)a < *(const char*)b ? -1 : 1;
     41        return *(const char*)a == *(const char*)b ? 0 : *(const char*)a < *(const char*)b ? -1 : 1; /***/
    4242}
    4343
    4444int main(int argc, char** argv) {
     45        FILE* out = fopen("c-out.txt", "w");
    4546        srand(20171025);
    4647
     
    5253        struct stack t;
    5354        TIMED( "copy_int",
    54                 copy_stack(&t, &s, copy_int);
     55                copy_stack(&t, &s, copy_int); /***/
    5556        )
    5657
    5758        TIMED( "clear_int",
    58                 clear_stack(&s, free);
     59                clear_stack(&s, free); /***/
    5960        )
    6061
    6162        int max = 0;
    6263        REPEAT_TIMED( "pop_int",
    63                 int* x = pop_stack(&t);
     64                int* x = pop_stack(&t); /***/
    6465                if ( *x > max ) { max = *x; }
    6566                free(x);
     67        )
     68        print( out, "d", max, "\n" ); /***/
     69
     70        REPEAT_N_TIMED( "print_int", N/2,
     71                print( out, "dsds", rand(), ":", rand(), "\n" ); /***/
    6672        )
    6773
     
    7379        struct stack t2;
    7480        TIMED( "copy_bool_char",
    75                 copy_stack(&t2, &s2, copy_pair_bool_char);
     81                copy_stack(&t2, &s2, copy_pair_bool_char); /***/
    7682        )
    7783
    7884        TIMED( "clear_bool_char",
    79                 clear_stack(&s2, free_pair_bool_char);
     85                clear_stack(&s2, free_pair_bool_char); /***/
    8086        )
    8187
    8288        struct pair* max2 = new_pair( new_bool(0), new_char('\0') );
    8389        REPEAT_TIMED( "pop_bool_char",
    84                 struct pair* x = pop_stack(&t2);
    85                 if ( cmp_pair( x, max2, cmp_bool, cmp_char ) > 0 ) {
    86                         free_pair_bool_char( max2 );
     90                struct pair* x = pop_stack(&t2); /***/
     91                if ( cmp_pair( x, max2, cmp_bool, cmp_char ) > 0 ) { /***/
     92                        free_pair_bool_char( max2 ); /***/
    8793                        max2 = x;
    8894                } else {
    89                         free_pair_bool_char( x );
     95                        free_pair_bool_char( x ); /***/
    9096                }
    9197        )
    92         free_pair_bool_char( max2 );
     98        print( out, "pbc", *max2, "\n" ); /***/
     99        free_pair_bool_char( max2 ); /***/
    93100
    94         FILE* out = fopen("c-out.txt", "w");
    95         REPEAT_TIMED( "print_int",
    96                 print( out, "dsds", rand(), ":", rand(), "\n" );
     101        REPEAT_N_TIMED( "print_pair", N/2,
     102                struct pair p1 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) }); /***/
     103                struct pair p2 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) }); /***/
     104                print( out, "pbcspbcs", p1, ":", p2, "\n" ); /***/
     105                free(p1.first); free(p1.second); /***/
     106                free(p2.first); free(p2.second); /***/
    97107        )
    98 
    99         REPEAT_TIMED( "print_pair",
    100                 struct pair p1 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) });
    101                 struct pair p2 = ((struct pair){ new_bool(rand() & 0x1), new_char(rand() & 0x7F) });
    102                 print( out, "pbcspbcs", p1, ":", p2, "\n" );
    103                 free(p1.first); free(p1.second);
    104                 free(p2.first); free(p2.second);
    105         )
     108       
    106109        fclose(out);
    107110}
Note: See TracChangeset for help on using the changeset viewer.