Wow_Rasl

Untitled

Oct 16th, 2022
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.79 KB | None | 0 0
  1. #pragma optimize( "[optimization-list]", {off} )
  2. #include <iomanip>
  3. #include <iostream>
  4. #include <string>
  5. #include <vector>
  6. #include <fstream>
  7. #include <list>
  8. #include <chrono>
  9. #include <iterator>
  10. #include <algorithm>
  11.  
  12. using namespace std;
  13. int sizes[10] = { 100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000 };
  14.  
  15. class TimeLogger {
  16. public:
  17.     std::ofstream outstream;
  18.  
  19.     TimeLogger(const string& PATH) {
  20.         outstream.open(PATH);
  21.         frozen_time = std::chrono::steady_clock::now();
  22.         current_time = std::chrono::steady_clock::now();
  23.     }
  24.  
  25.     ~TimeLogger() {
  26.         outstream.close();
  27.     }
  28.  
  29.     void reset() {
  30.         set_ctime(std::chrono::steady_clock::now());
  31.         set_ftime(std::chrono::steady_clock::now());
  32.     }
  33.     std::chrono::steady_clock::time_point get_ftime() {
  34.         frozen_time;
  35.     }
  36.     std::chrono::steady_clock::time_point get_ctime() {
  37.         current_time;
  38.     }
  39.     void set_ftime(std::chrono::steady_clock::time_point time) {
  40.         frozen_time = time;
  41.     }
  42.     void set_ctime(std::chrono::steady_clock::time_point time) {
  43.         current_time = time;
  44.     }
  45.     void log(const string container_type, const int len, const string operation) {
  46.         if (outstream.is_open()) {
  47.             set_ctime(std::chrono::steady_clock::now());
  48.             auto elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(get_ctime() - get_ftime());
  49.             outstream << "container: " << container_type << "; size: " << len
  50.                 << "; operation: " << operation << "; " << "time:"
  51.                 << elapsed_ms.count() << ";\n";
  52.         }
  53.     }
  54. private:
  55.     std::chrono::steady_clock::time_point frozen_time;
  56.     std::chrono::steady_clock::time_point current_time;
  57. };
  58.  
  59. std::vector<int> integer_vec_reader(const string& PATH, const int len) {
  60.     std::ifstream instream(PATH);
  61.     vector<int>result;
  62.     if (instream.is_open()) {
  63.         for (int i = 0; i < len; i++) {
  64.             string current;
  65.             getline(instream, current);
  66.             result.push_back(std::stoi(current));
  67.         }
  68.     }
  69.     instream.close();
  70.     return result;
  71. }
  72.  
  73. std::list<int> integer_list_reader(const string& PATH, const int len) {
  74.     std::ifstream instream(PATH);
  75.     std::list<int>result;
  76.     if (instream.is_open()) {
  77.         for (int i = 0; i < len; i++) {
  78.             string current;
  79.             getline(instream, current);
  80.             result.push_back(std::stoi(current));
  81.         }
  82.     }
  83.     instream.close();
  84.     return result;
  85. }
  86.  
  87. std::vector<string>string_vec_reader(const string& PATH, const int len) {
  88.     std::ifstream instream(PATH);
  89.     vector<string> result;
  90.     if (instream.is_open()) {
  91.         string current;
  92.         for (int i = 0; i < len; i++) {
  93.             getline(instream, current);
  94.             result.push_back(current);
  95.         }
  96.     }
  97.     instream.close();
  98.     return result;
  99. }
  100.  
  101. std::list<string>string_list_reader(const string& PATH, const int len) {
  102.     std::ifstream instream(PATH);
  103.     std::list<string> ans;
  104.     if (instream.is_open()) {
  105.         string current;
  106.         for (int i = 0; i < len; i++) {
  107.             getline(instream, current);
  108.             ans.push_back(current);
  109.         }
  110.     }
  111.     instream.close();
  112.     return ans;
  113. }
  114. int main() {
  115.     std::ofstream fout;    
  116.     std::ofstream sout;
  117.     fout.open("IntDatabase.txt");
  118.     sout.open("StrDataBase.txt");
  119.     TimeLogger logger("Logs.txt");
  120.     //OPERATION : FIND
  121.     for (auto elem : sizes) {
  122.         logger.reset();
  123.         vector<int>nums = integer_vec_reader("IntDataBase.txt", elem);
  124.         auto it = std::find(nums.begin(), nums.end(), nums[elem-1]);
  125.         logger.log("vector<int>", elem, "std::find");
  126.     }
  127.     logger.outstream << endl;
  128.    for (auto elem : sizes) {
  129.         logger.reset();
  130.         list<int>nums = integer_list_reader("IntDataBase.txt", elem);
  131.         auto it = std::find(nums.begin(), nums.end(), *next(nums.begin(), elem-1));
  132.         logger.log("list<int>", elem, "std::find");
  133.     }
  134.     logger.outstream << endl;
  135.     for (auto elem : sizes) {
  136.         logger.reset();
  137.         vector<string>nums = string_vec_reader("StrDataBase.txt", elem);
  138.         std::find(nums.begin(), nums.end(), nums[elem - 1]);
  139.         logger.log("vector<string>", elem, "std::find");
  140.     }
  141.     logger.outstream << endl;
  142.     for (auto elem : sizes) {
  143.         logger.reset();
  144.         list<string>nums = string_list_reader("StrDataBase.txt", elem);
  145.         auto it = std::find(nums.begin(), nums.end(), *next(nums.begin(), elem - 1));
  146.         logger.log("list<string>", elem, "std::find");
  147.     }
  148.     //OPERATION : SORT
  149.     for (auto elem : sizes) {
  150.         vector<int>nums = integer_vec_reader("IntDataBase.txt", elem);
  151.         logger.reset();
  152.         std::sort(nums.begin(), nums.end());
  153.         logger.log("vector<int>", elem, "std::sort");
  154.     }
  155.     logger.outstream << endl;
  156.     for (auto elem : sizes) {
  157.         logger.reset();
  158.         list<int>nums = integer_list_reader("IntDataBase.txt", elem);
  159.         nums.sort();
  160.         logger.log("list<int>", elem, "std::sort");
  161.     }
  162.     logger.outstream << endl;
  163.     for (auto elem : sizes) {
  164.         logger.reset();
  165.         vector<string>nums = string_vec_reader("StrDataBase.txt", elem);
  166.         std::sort(nums.begin(), nums.end());
  167.         logger.log("vector<string>", elem, "std::sort");
  168.     }
  169.     logger.outstream << endl;
  170.     for (auto elem : sizes) {
  171.         logger.reset();
  172.         list<string>nums = string_list_reader("StrDataBase.txt", elem);
  173.         nums.sort();
  174.         logger.log("list<string>", elem, "std::sort");
  175.     }
  176.     // POP_BACK
  177.     for (auto elem : sizes) {
  178.         logger.reset();
  179.         vector<int>nums = integer_vec_reader("IntDataBase.txt", elem);
  180.         for (int i = 0; i < elem; i++) {
  181.             nums.pop_back();
  182.         }
  183.         logger.log("vector<int>", elem, "pop_back()");
  184.     }
  185.     logger.outstream << endl;
  186.     for (auto elem : sizes) {
  187.         logger.reset();
  188.         list<int>nums = integer_list_reader("IntDataBase.txt", elem);
  189.         for (int i = 0; i < elem; i++) {
  190.             nums.pop_back();
  191.         }
  192.         logger.log("list<int>", elem, "pop_back()");
  193.     }
  194.     logger.outstream << endl;
  195.     for (auto elem : sizes) {
  196.         logger.reset();
  197.         vector<string>nums = string_vec_reader("StrDataBase.txt", elem);
  198.         for (int i = 0; i < elem; i++) {
  199.             nums.pop_back();
  200.         }
  201.         logger.log("vector<string>", elem, "pop_back()");
  202.     }
  203.     logger.outstream << endl;
  204.     for (auto elem : sizes) {
  205.         logger.reset();
  206.         list<string>nums = string_list_reader("StrDataBase.txt", elem);
  207.         for (int i = 0; i < elem; i++) {
  208.             nums.pop_back();
  209.         }
  210.         logger.log("list<string>", elem, "pop_back()");
  211.     }
  212.     // POP_FRONT
  213.     for (auto elem : sizes) {
  214.         logger.reset();
  215.         vector<int>nums = integer_vec_reader("IntDataBase.txt", elem);
  216.         for (int i = 0; i < elem; i++) {
  217.             nums.erase(nums.begin());
  218.         }
  219.         logger.log("vector<int>", elem, "pop_front()");
  220.     }
  221.     logger.outstream << endl;
  222.     for (auto elem : sizes) {
  223.         logger.reset();
  224.         list<int>nums = integer_list_reader("IntDataBase.txt", elem);
  225.         for (int i = 0; i < elem; i++) {
  226.             nums.pop_front();
  227.         }
  228.         logger.log("list<int>", elem, "pop_front()");
  229.     }
  230.     logger.outstream << endl;
  231.     for (auto elem : sizes) {
  232.         logger.reset();
  233.         vector<string>nums = string_vec_reader("StrDataBase.txt", elem);
  234.         for (int i = 0; i < elem; i++) {
  235.             nums.erase(nums.begin());
  236.         }
  237.         logger.log("vector<string>", elem, "pop_front()");
  238.     }
  239.     logger.outstream << endl;
  240.     for (auto elem : sizes) {
  241.         logger.reset();
  242.         list<string>nums = string_list_reader("StrDataBase.txt", elem);
  243.         for (int i = 0; i < elem; i++) {
  244.             nums.pop_front();
  245.         }
  246.         logger.log("list<string>", elem, "pop_front()");
  247.     }
  248.     //PUSH_FRONT
  249.     for (auto elem : sizes) {
  250.         logger.reset();
  251.         vector<int>nums_storage = integer_vec_reader("IntDataBase.txt", elem);
  252.         vector<int>nums;
  253.         for (int i = 0; i < elem; i++) {
  254.             nums.insert(nums.begin(), nums_storage[i]);
  255.         }
  256.         logger.log("vector<int>", elem, "push_front()");
  257.     }
  258.     logger.outstream << endl;
  259.     //PUSH_FRONT IN RESERVE USING CASE
  260.     for (auto elem : sizes) {
  261.         logger.reset();
  262.         vector<int>nums_storage = integer_vec_reader("IntDataBase.txt", elem);
  263.         vector<int>nums;
  264.         nums.reserve(elem);
  265.         for (int i = 0; i < elem; i++) {
  266.             nums.insert(nums.begin(), nums_storage[i]);
  267.         }
  268.         logger.log("vector<int>", elem, "push_front()");
  269.     }
  270.     logger.outstream << endl;
  271.     for (auto elem : sizes) {
  272.         logger.reset();
  273.         list<int>nums_storage = integer_list_reader("IntDataBase.txt", elem);
  274.         list<int>nums;
  275.         for (int i = 0; i < elem; i++) {
  276.             nums.push_front(*next(nums_storage.begin(), i));
  277.         }
  278.         logger.log("list<int>", elem, "push_front()");
  279.     }
  280.     logger.outstream << endl;
  281.     for (auto elem : sizes) {
  282.         logger.reset();
  283.         vector<string>nums_storage = string_vec_reader("StrDataBase.txt", elem);
  284.         vector<string>nums;
  285.         for (int i = 0; i < elem; i++) {
  286.             nums.insert(nums.begin(), nums_storage[i]);
  287.         }
  288.         logger.log("vector<string>", elem, "push_front()");
  289.     }
  290.     logger.outstream << endl;
  291.     for (auto elem : sizes) {
  292.         logger.reset();
  293.         list<string>nums_storage = string_list_reader("StrDataBase.txt", elem);
  294.         list<string>nums;
  295.         for (int i = 0; i < elem; i++) {
  296.             nums.push_front(*next(nums_storage.begin(), i));
  297.         }
  298.         logger.log("list<string>", elem, "push_front()");
  299.     }
  300.     logger.outstream << endl;
  301.     //PUSH_BACK
  302.     for (auto elem : sizes) {
  303.         logger.reset();
  304.         vector<int>nums_storage = integer_vec_reader("IntDataBase.txt", elem);
  305.         vector<int>nums;
  306.         for (int i = 0; i < elem; i++) {
  307.             nums.push_back(nums_storage[i]);
  308.         }
  309.         logger.log("vector<int>", elem, "push_back()");
  310.     }
  311.     logger.outstream << endl;
  312.     //PUSH_BACK IN RESERVE USING CASE
  313.     for (auto elem : sizes) {
  314.         logger.reset();
  315.         vector<int>nums_storage = integer_vec_reader("IntDataBase.txt", elem);
  316.         vector<int>nums;
  317.         nums.reserve(elem);
  318.         for (int i = 0; i < elem; i++) {
  319.             nums.push_back(nums_storage[i]);
  320.         }
  321.         logger.log("vector<int>", elem, "push_back()");
  322.     }
  323.     logger.outstream << endl;
  324.     for (auto elem : sizes) {
  325.         logger.reset();
  326.         list<int>nums_storage = integer_list_reader("IntDataBase.txt", elem);
  327.         list<int>nums;
  328.         for (int i = 0; i < elem; i++) {
  329.             nums.push_back(*next(nums_storage.begin(), i));
  330.         }
  331.         logger.log("list<int>", elem, "push_back()");
  332.     }
  333.     logger.outstream << endl;
  334.     for (auto elem : sizes) {
  335.         logger.reset();
  336.         vector<string>nums_storage = string_vec_reader("StrDataBase.txt", elem);
  337.         vector<string>nums;
  338.         for (int i = 0; i < elem; i++) {
  339.             nums.push_back(nums_storage[i]);
  340.         }
  341.         logger.log("vector<string>", elem, "push_back()");
  342.     }
  343.     logger.outstream << endl;
  344.     for (auto elem : sizes) {
  345.         logger.reset();
  346.         list<string>nums_storage = string_list_reader("StrDataBase.txt", elem);
  347.         list<string>nums;
  348.         for (int i = 0; i < elem; i++) {
  349.             nums.push_back(*next(nums_storage.begin(), i));
  350.         }
  351.         logger.log("list<string>", elem, "push_back()");
  352.     }
  353.     logger.outstream << endl;
  354.     fout.close();
  355.     sout.close();
  356.     return 0;
  357. }
Advertisement
Add Comment
Please, Sign In to add comment