analysis6.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <unordered_map>
  5. #include <chrono>
  6. #include <cstdlib>
  7. using namespace std;
  8. #include "list.h"
  9. #include "tire.h"
  10. const int N = 1e5;
  11. const int M1 = 3;
  12. const int M2 = 5;
  13. struct Test {
  14. int num;
  15. string str;
  16. };
  17. void umap_test() {
  18. unordered_map<string, Test> umap;
  19. for (int i = 0; i < N; ++i) {
  20. Test test;
  21. test.num = i + 1;
  22. test.str = to_string(i + 1);
  23. umap.insert({ test.str, test });
  24. };
  25. for (int i = N * 2; i >= 0; i -= 17) {
  26. size_t res = umap.erase(to_string(i + 1));
  27. };
  28. cout << "umap ";
  29. system("pause");
  30. }
  31. void tire_test() {
  32. Tire<Test> tire;
  33. for (int i = 0; i < N; ++i) {
  34. Test test;
  35. test.num = i + 1;
  36. test.str = to_string(i + 1);
  37. tire.insert(test.str, test);
  38. };
  39. for (int i = N * 2; i >= 0; i -= 17) {
  40. size_t res = tire.erase(to_string(i + 1));
  41. };
  42. cout << "tire ";
  43. system("pause");
  44. }
  45. void analysis(string name, vector<long long>& nums) {
  46. const int n = nums.size();
  47. long long maxn = LLONG_MIN, minn = LLONG_MAX;
  48. long long sum = 0;
  49. for (long long& num : nums) {
  50. maxn = max(maxn, num);
  51. minn = min(minn, num);
  52. sum += num;
  53. }
  54. cout << name << ": " << "maxn: " << maxn << "ms " << "minn: " << minn << "ms " << "avg: " << (1.0 * sum / n) << "ms " << "sum: " << sum << "ms " << endl;
  55. }
  56. void print_times(string name, vector<long long>& nums) {
  57. cout << name << endl;
  58. for (long long& num : nums) {
  59. cout << num << " ";
  60. };
  61. cout << endl;
  62. }
  63. int main() {
  64. // group 1
  65. for (int i = 0; i < M1; ++i) {
  66. umap_test();
  67. tire_test();
  68. }
  69. // group 2
  70. for (int i = 0; i < M1; ++i) {
  71. tire_test();
  72. umap_test();
  73. }
  74. return 0;
  75. }