/
Oppq
/
Labs
Обзор
Документация
Войти
/
Oppq
/
Labs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lab6/Tests.cpp
183 строки
7 KB
Oppq
create: Tests.cpp
01 апр 2026, 19:00
Верифицирован
01 апр 2026, 19:00
d09b31c
Код
Авторство
О чём код?
#include <iostream> #include <array> #include <vector> #include <list> #include <set> #include <map> #include <unordered_set> #include <chrono> #include <algorithm> using namespace std; const int N = 100000; void testArray() { cout << "\nARRAY\n"; array<int, N> arr; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) arr[i] = i; auto end = chrono::steady_clock::now(); cout << "Заполнение: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; // Поиск среднего элемента, поиск каждого занимает O(N²) времени. Для N=100000 это ~10 миллиардов операций, что очень долго, поэтому усредним start = chrono::steady_clock::now(); auto it = find(arr.begin(), arr.end(), N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) arr[i] = arr[i] * 2; end = chrono::steady_clock::now(); cout << "Изменение: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testVector() { cout << "\nVECTOR\n"; vector<int> v; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) v.push_back(i); auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = find(v.begin(), v.end(), N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) v[i] = v[i] * 2; end = chrono::steady_clock::now(); cout << "Изменение: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); v.clear(); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testList() { cout << "\nLIST\n"; list<int> l; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) l.push_back(i); auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = find(l.begin(), l.end(), N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (auto& x : l) x = x * 2; end = chrono::steady_clock::now(); cout << "Изменение: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); l.clear(); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testSet() { cout << "\nSET\n"; set<int> s; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) s.insert(i); auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = s.find(N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) s.erase(i); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testMap() { cout << "\nMAP\n"; map<int, int> m; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) m[i] = i; auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = m.find(N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) m[i] = m[i] * 2; end = chrono::steady_clock::now(); cout << "Изменение: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) m.erase(i); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testMultimap() { cout << "\nMULTIMAP\n"; multimap<int, int> mm; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) mm.insert({i, i}); auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = mm.find(N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) mm.erase(i); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } void testUnorderedSet() { cout << "\nUNORDERED_SET\n"; unordered_set<int> us; auto start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) us.insert(i); auto end = chrono::steady_clock::now(); cout << "Вставка: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); auto it = us.find(N/2); end = chrono::steady_clock::now(); cout << "Поиск (среднего): " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; start = chrono::steady_clock::now(); for (int i = 0; i < N; i++) us.erase(i); end = chrono::steady_clock::now(); cout << "Удаление: " << chrono::duration_cast<chrono::milliseconds>(end - start).count() << " мс\n"; } int main() { cout << "Тестирование скорости (N = " << N << ")\n"; testArray(); testVector(); testList(); testSet(); testMap(); testMultimap(); testUnorderedSet(); return 0; }