source: doc/generic_types/evaluation/cpp-vbench.cpp@ b14dd030

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since b14dd030 was b14dd030, checked in by Aaron Moss <a3moss@…>, 9 years ago

Fix performance bug in C++ virtual benchmark

  • Property mode set to 100644
File size: 979 bytes
Line 
1#include <algorithm>
2#include <stdlib.h>
3#include "bench.hpp"
4#include "cpp-vstack.hpp"
5#include "object.hpp"
6
7int main(int argc, char** argv) {
8 srand(20171025);
9
10 stack s;
11 REPEAT_TIMED( "push_int",
12 s.push( std::make_unique<integer>( rand() ) );
13 )
14
15 stack t;
16 TIMED( "copy_int",
17 t = s;
18 )
19
20 TIMED( "clear_int",
21 s.clear();
22 )
23
24 integer max;
25 REPEAT_TIMED( "pop_int",
26 max = std::max( max, t.pop()->as<integer>() );
27 )
28
29 stack s2;
30 REPEAT_TIMED( "push_bool_char",
31 s2.push( std::make_unique<pair>( std::make_unique<boolean>( rand() & 0x1 ),
32 std::make_unique<character>( rand() & 0x7F ) ) );
33 )
34
35 stack t2;
36 TIMED( "copy_bool_char",
37 t2 = s2;
38 )
39
40 TIMED( "clear_bool_char",
41 s2.clear();
42 )
43
44 auto max2 = std::make_unique<pair>( std::make_unique<boolean>(false),
45 std::make_unique<character>('\0') );
46 REPEAT_TIMED( "pop_bool_char",
47 std::unique_ptr<object> x = t2.pop();
48 if ( x->as<pair>() > *max2 ) { max2.reset( static_cast<pair*>(x.release()) ); }
49 )
50}
Note: See TracBrowser for help on using the repository browser.