Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stack>
- #include <vector>
- #include <iostream>
- #include <cstdlib>
- #include <sys/time.h>
- #define LOOPNUM 1000000
- // LOOPTEST to be defined with value standardCPP or standardC
- void standardVect(std::vector<int>& vect)
- {
- /* because we know ;) */
- vect.reserve(LOOPNUM);
- for (int i=0; i < LOOPNUM; i++)
- {
- vect.push_back(i);
- }
- }
- void standardStack (std::stack<int>& stack)
- {
- for (int i=0; i < LOOPNUM; i++)
- {
- stack.push(i);
- }
- }
- struct stacK
- {
- struct stacK* previous;
- int i;
- };
- void standardC (stacK* head)
- {
- stacK *current (head);
- for (int i=0; i < LOOPNUM; i++)
- {
- if (stacK *tmp = ( struct stacK * ) malloc ( sizeof ( struct stacK ) ))
- {
- tmp ->i = i;
- tmp ->previous = current;
- current = tmp;
- }
- }
- };
- int main()
- {
- std::stack<int> stack;
- std::vector<int> vect;
- stacK stackC;
- timespec start, end;
- clock_gettime(CLOCK_MONOTONIC, &start);
- #if BENCH_C
- standardC(&stackC);
- #endif
- #if BENCH_STACK
- standardStack(stack);
- #endif
- #if BENCH_VECT
- standardVect(vect);
- #endif
- clock_gettime(CLOCK_MONOTONIC, &end);
- std::cout << (end.tv_sec - start.tv_sec) * 1000 * 1000 * 1000ULL + (end.tv_nsec - start.tv_nsec) << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement