timealgorithms.cxx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream>
  5. #include <sstream>
  6. #include <ctime>
  7. #include <vector>
  8. #include "json.hpp"
  9. //#include "timealgorithms.h"
  10. #include "insertionsort.h"
  11. #include "mergesort.h"
  12. int main(int argc, char* argv[]) {
  13. // read JSON file and store in jsonObject
  14. std::ifstream file;
  15. file.open(argv[1]);
  16. nlohmann::json jsonObject;
  17. // Store the contents filename into jsonObject
  18. if (file.is_open()) {
  19. file >> jsonObject;
  20. }
  21. // initialize array for JSON data
  22. //int n = jsonObject["metadata"]["arraySize"];
  23. std::vector<int>* sampleArray = new std::vector<int>();
  24. // initialize timer
  25. time_t timer;
  26. // initialize insertion sort variables
  27. int *insReturnArray;
  28. double insStartTime;
  29. double insTime;
  30. // initialize merge sort variables
  31. int *mergeReturnArray;
  32. double merStartTime;
  33. double merTime;
  34. //double merTime;
  35. // initialize quick sort variables
  36. //int quickComparisonCounter;
  37. //int quickMemAccessCounter;
  38. //double quickTime;
  39. std::string sampleName; // Sample key name to iterate
  40. for (auto itr = jsonObject.begin(); itr != jsonObject.end(); ++itr) {
  41. sampleName = itr.key();
  42. //int arrayElement = 0;
  43. if (sampleName != "metadata") {
  44. for (auto arrayItr = jsonObject[sampleName].begin(); arrayItr != jsonObject[sampleName].end(); ++arrayItr) {
  45. //sampleArray[arrayElement] = *arrayItr;
  46. //sampleArray.push_back(*arrayItr);
  47. sampleArray -> push_back(*arrayItr);
  48. //arrayElement++;
  49. }
  50. }
  51. }
  52. for (auto const &element: *sampleArray){
  53. std::cout << element << ' ' << std::endl;
  54. }
  55. // insertion sort evaluation
  56. insStartTime = time(0);
  57. insReturnArray = InsertionSort(sampleArray);
  58. insTime = time(0) - insStartTime;
  59. std::cout << "insertion sort comparison counter: " << *insReturnArray << std::endl;
  60. std::cout << "insertion sort memory access counter: " << *(insReturnArray + 1) << std::endl;
  61. std::cout << "wallclock time for insertion sort: " << insTime << std::endl;
  62. // merge sort evaluation
  63. merStartTime = time(0);
  64. mergeReturnArray = MergeSort(sampleArray);
  65. merTime = time(0) - merStartTime;
  66. std::cout << "insertion sort comparison counter: " << *mergeReturnArray << std::endl;
  67. std::cout << "insertion sort memory access counter: " << *(mergeReturnArray + 1) << std::endl;
  68. std::cout << "wallclock time for insertion sort: " << merTime << std::endl;
  69. //QuickSort(*underlyingSampleArray, *insComparisonCounter, *insMemAccessCounter);
  70. // initiate CSV file to which data will be written
  71. //std::ofstream theFile;
  72. //theFile.open("timingalgorithms.csv");
  73. //theFile << "Sample,InsertionSortTime,InsertionSortCompares,InsertionSortMemaccess,MergeSortTime,MergeSortCompares,MergeSortMemaccess,QuickSortTime,QuickSortCompares,QuickSortMemaccess,\n";
  74. //theFile.close();
  75. file.close();
  76. return 0;
  77. }