Created
November 15, 2014 07:16
-
-
Save goyalankit/348ad6c8edc62477a8b1 to your computer and use it in GitHub Desktop.
Compile using - `g++ test_avl.cpp -I/perfexpert/tools/macpo/common`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cassert> | |
#include <map> | |
#include <vector> | |
#include "avl_tree.h" | |
// creates a bit mask with bits between a and b from the right as 1. | |
// example: b = 4, a = 2 => 0000001100 | |
#define BIT_MASK(a, b) (size_t)(((size_t) -1 >> ((sizeof(size_t)*8) \ | |
- (b))) & ~((1U << (a)) - 1)) | |
unsigned address_to_set(size_t address) { | |
return ((address & BIT_MASK(6, 12)) >> 6); | |
} | |
//#include "analysis_defs.h" | |
int main() { | |
avl_tree *avl = new avl_tree(); | |
mem_info_t *meminfo1 = new mem_info_t(); | |
meminfo1->address = 1168214315012; | |
avl->insert(meminfo1); // rd = 0 | |
std::cout << avl->get_distance(18253348672) << " SB: 0 - " << address_to_set(meminfo1->address) << "CL: " << (meminfo1->address >> 6) << std::endl; | |
mem_info_t *meminfo2 = new mem_info_t(); | |
meminfo2->address = 1168214319108; | |
avl->insert(meminfo2); // rd = 1 | |
std::cout << avl->get_distance(18253348672) << " SB: 1 - " << address_to_set(meminfo2->address) << "CL: " << (meminfo2->address >> 6) << std::endl; | |
mem_info_t *meminfo3 = new mem_info_t(); | |
meminfo3->address = 1168214323208; | |
avl->insert(meminfo3); // rd = 2 | |
std::cout << avl->get_distance(18253348672) << " SB: 2 - " << address_to_set(meminfo3->address) << "CL: " << (meminfo3->address >> 6) << std::endl; | |
mem_info_t *meminfo4 = new mem_info_t(); | |
meminfo4->address = 1168214327304; | |
avl->insert(meminfo4); // rd = 3 | |
std::cout << avl->get_distance(18253348672) << " SB: 3 - " << address_to_set(meminfo4->address) << "CL: " << (meminfo4->address >> 6) << std::endl; | |
mem_info_t *meminfo5 = new mem_info_t(); | |
meminfo5->address = 1168214364184; | |
avl->insert(meminfo5); // rd = 4 | |
std::cout << avl->get_distance(18253348672) << " SB: 4 - " << address_to_set(meminfo5->address) << "CL: " << (meminfo5->address >> 6) << std::endl; | |
mem_info_t *meminfo6 = new mem_info_t(); | |
meminfo6->address = 1168214368264; | |
avl->insert(meminfo6); // rd = 5 | |
std::cout << avl->get_distance(18253348672) << " SB: 5 - " << address_to_set(meminfo6->address) << "CL: " << (meminfo6->address >> 6) << std::endl; | |
mem_info_t *meminfo7 = new mem_info_t(); | |
meminfo7->address = 1168214372360; | |
avl->insert(meminfo7); // rd = 6 | |
std::cout << avl->get_distance(18253348672) << " SB: 6 - " << address_to_set(meminfo7->address) << "CL: " << (meminfo7->address >> 6) << std::endl; | |
mem_info_t *meminfo8 = new mem_info_t(); | |
meminfo8->address = 1168214376456; | |
avl->insert(meminfo8); // rd = 7 | |
std::cout << avl->get_distance(18253348672) << " SB: 7 - " << address_to_set(meminfo8->address) << "CL: " << (meminfo8->address >> 6) << std::endl; | |
avl->insert(meminfo1); // rd = 8 | |
std::cout << avl->get_distance(18253348672) << " SB: 8 - " << address_to_set(meminfo1->address) << "CL: " << (meminfo1->address >> 6) << std::endl; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment