Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main()
- {
- vector<thread> threads;
- threads.reserve(8);
- mutex m;
- vector<int> ints;
- ints.reserve(8000000);
- for (int i = 0; i < 800000; ++i)
- ints.push_back(1);
- int sum = 0;
- auto start = chrono::high_resolution_clock::now();
- for (int i = 0; i < 800000; ++i)
- sum += ints[i];
- auto end = chrono::high_resolution_clock::now();
- auto diff = end - start;
- cout << "index loop: " << chrono::duration<double, milli> (diff).count() << "ms" << endl;
- sum = 0;
- start = chrono::high_resolution_clock::now();
- for (auto& val : ints)
- sum += val;
- end = chrono::high_resolution_clock::now();
- diff = end - start;
- cout << "range loop: " << chrono::duration<double, milli>(diff).count() << "ms" << endl;
- sum = 0;
- start = chrono::high_resolution_clock::now();
- for (auto it = ints.begin(); it != ints.end(); ++it)
- sum += *it;
- end = chrono::high_resolution_clock::now();
- diff = end - start;
- cout << "iterator loop: " << chrono::duration<double, milli>(diff).count() << "ms" << endl;
- sum = 0;
- vector<chrono::duration<double, milli>> times;
- times.resize(8);
- auto func = [&](int start, int total, int index)
- {
- int partial_sum = 0;
- auto s = chrono::high_resolution_clock::now();
- for (int i = start; i < start + total; ++i)
- partial_sum += ints[i];
- auto e = chrono::high_resolution_clock::now();
- auto d = e - s;
- m.lock();
- cout << "thread " + to_string(index) + ": " << chrono::duration<double, milli>(d).count() << "ms" << endl;
- sum += partial_sum;
- m.unlock();
- times[index] = chrono::duration<double, milli>(d);
- };
- for (int i = 0; i < 8; ++i)
- threads.push_back(thread(func, i * 100000, 100000, i));
- for (int i = 0; i < 8; ++i)
- threads[i].join();
- chrono::duration<double, milli> total;
- for (int i = 0; i < 8; ++i)
- total += times[i];
- cout << threads.size() << " threads total: " << total.count() << "ms" << endl;
- cout << sum << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement