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

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since b14dd03 was b14dd03, checked in by Aaron Moss <a3moss@…>, 7 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.