Last active
October 28, 2018 16:28
-
-
Save nlw0/2d46adc807aeb12e5b065176137ddcbf to your computer and use it in GitHub Desktop.
Testing the memory locality of a linked list in C++
This file contains 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
#import<iostream> | |
#import<list> | |
struct Node { | |
int value; | |
Node* next; | |
Node(int v, Node* n=NULL) : value(v), next(n) {} | |
}; | |
int main(int, char**) { | |
Node * a = new Node(0); | |
for(int i = 1; i < 16; i++) | |
a = new Node(i, a); | |
for(Node * b = a; b != NULL; b=b->next) | |
std::cout << "address abs " << b | |
<< " rel " << a - b | |
<< " value " << b->value | |
<< std::endl; | |
} | |
/* | |
address abs 0x55634c67d050 rel 0 value 15 | |
address abs 0x55634c67d030 rel 2 value 14 | |
address abs 0x55634c67d010 rel 4 value 13 | |
address abs 0x55634c67cff0 rel 6 value 12 | |
address abs 0x55634c67cfd0 rel 8 value 11 | |
address abs 0x55634c67cfb0 rel 10 value 10 | |
address abs 0x55634c67cf90 rel 12 value 9 | |
address abs 0x55634c67cf70 rel 14 value 8 | |
address abs 0x55634c67cf50 rel 16 value 7 | |
address abs 0x55634c67cf30 rel 18 value 6 | |
address abs 0x55634c67cf10 rel 20 value 5 | |
address abs 0x55634c67cef0 rel 22 value 4 | |
address abs 0x55634c67ced0 rel 24 value 3 | |
address abs 0x55634c67ceb0 rel 26 value 2 | |
address abs 0x55634c67ce90 rel 28 value 1 | |
address abs 0x55634c67ce70 rel 30 value 0 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment