Facebook
From Botched Tapir, 7 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 268
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <sys/time.h>
  5. #include <unistd.h>
  6. #include "bst.h"
  7.  
  8. typedef struct timeval timeval;
  9.  
  10. void dfsPrint(Node* root) {
  11.         if(root == NULL)
  12.                 return;
  13.         dfsPrint(root->left);
  14.         dfsPrint(root->right);
  15.  
  16.         if(root->left == NULL && root->right == NULL)
  17.                 printf("%s", root->surname);
  18. //      printf("%s %d\n", root->name, root);
  19. }
  20.  
  21. // clocks
  22. double userTime;
  23. double sysTime;
  24. double realTime;
  25.  
  26. clock_t start, end;
  27.  
  28. struct timeval tv1, tv2;
  29.  
  30. void startClock() {
  31.     gettimeofday(&tv1, NULL);
  32.     start = clock();
  33.  
  34. }
  35.  
  36. void endClock() {
  37.    
  38.     gettimeofday(&tv2, NULL);
  39.     end = clock();
  40.  
  41.     userTime =  (double) (tv2.tv_usec - tv1.tv_usec) / 1000000;
  42.     sysTime =  (double) (tv2.tv_sec - tv1.tv_sec) ;
  43.     realTime = (end - start) / 1000000.0;
  44.  
  45. }
  46.  
  47. int main() {
  48.  
  49.     PhoneBook* pb = createPb();
  50.     pb->key = SURNAME;
  51.  
  52.     FILE* stream = fopen("data2.csv", "r");
  53.  
  54.     char name[128];
  55.     char surname[128];
  56.     char birthday[128];
  57.     char phone[128];
  58.     char address[128];
  59.     char email[128];
  60.     Node nodes[1000];
  61.  
  62.     int i;
  63.     for(i=0; i<1000; i++)
  64.     {
  65.         fgets(name, 128, stream);
  66.         fgets(surname, 128, stream);
  67.         fgets(birthday, 128, stream);
  68.         fgets(phone, 128, stream);
  69.         fgets(address, 128, stream);
  70.         fgets(email, 128, stream);
  71.         Node* node = &(nodes[i]);
  72.                 node->name =  malloc(sizeof(char)*(strlen(name)+1));
  73.             strcpy(node->name, name);
  74.             node->surname =  malloc(sizeof(char)*(strlen(surname)+1));
  75.             strcpy(node->surname, surname);
  76.             node->birthday =  malloc(sizeof(char)*(strlen(birthday)+1));
  77.             strcpy(node->birthday, birthday);
  78.             node->phone =  malloc(sizeof(char)*(strlen(phone)+1));
  79.             strcpy(node->phone, phone);
  80.             node->email =  malloc(sizeof(char)*(strlen(email)+1));
  81.             strcpy(node->email, email);
  82.             node->address =  malloc(sizeof(char)*(strlen(address)+1));
  83.         strcpy(node->address, address);
  84.                 //printf("%d %s %s %d\n", i, name, surname, strlen(address));
  85.         //
  86.     }
  87.     fclose(stream);
  88.  
  89.  
  90.         startClock();    
  91.     for(i=0; i<1000; i++) {
  92.         Node* node = &nodes[i];
  93.         addNode(pb, node->name, node->surname, node->birthday, node->phone, node->email, node->address);
  94.     }
  95.     endClock();
  96.     printf("Czas budowy. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  97.  
  98.     startClock();
  99.     addNode(pb, "Joanna", "Wanna", "01.01.01", "123456789", "dzoana@wana", "Ulica costam");
  100.     endClock();
  101.     printf("Czas dodania elementu. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  102.    
  103.     Node* node = findNode(pb->root, pb->key, "Wanna");
  104.     startClock();
  105.     removeNode(&node);
  106.     endClock();
  107.     printf("Czas usuwania elementu optymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  108.        
  109.  
  110.     startClock();
  111.     node = findNode(pb->root, pb->key, "Frost");
  112.     removeNode(&node);
  113.     endClock();
  114.     printf("Czas usuwania elementu pesymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  115.        
  116.  
  117.         startClock();
  118.     findNode(pb->root, pb->key, "Jarvis");
  119.     endClock();
  120.     printf("Czas szukania elementu optymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  121.        
  122.     startClock();
  123.     findNode(pb->root, pb->key, "Zamora");
  124.     endClock();
  125.     printf("Czas szukania elementu pesymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  126.  
  127.         startClock();
  128.         PhoneBook* newPb = rebuildPb(pb, BIRTHDAY);
  129.         deletePb(pb);
  130.         endClock();
  131.         printf("Czas przebudowy. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime );
  132.        
  133.  
  134.    // dfsPrint(pb->root);
  135.     //printf("%s\n", pb->root->surname);
  136.  
  137.    
  138.  
  139.    
  140.  
  141.     return 0;
  142. }