Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- log_duration.h
- #pragma once
- #include <chrono>
- #include <iostream>
- #define PROFILE_CONCAT_INTERNAL(X, Y) X##Y
- #define PROFILE_CONCAT(X, Y) PROFILE_CONCAT_INTERNAL(X, Y)
- #define UNIQUE_VAR_NAME_PROFILE PROFILE_CONCAT(profileGuard, __LINE__)
- #define LOG_DURATION(x) LogDuration UNIQUE_VAR_NAME_PROFILE(x)
- class LogDuration {
- public:
- // заменим имя типа std::chrono::steady_clock
- // с помощью using для удобства
- using Clock = std::chrono::steady_clock;
- LogDuration(const std::string& id) : id_(id) {
- }
- ~LogDuration() {
- using namespace std::chrono;
- using namespace std::literals;
- const auto end_time = Clock::now();
- const auto dur = end_time - start_time_;
- std::cerr << id_ << ": "s << duration_cast<milliseconds>(dur).count() << " ms"s << std::endl;
- }
- private:
- const std::string id_;
- const Clock::time_point start_time_ = Clock::now();
- };
- ***************************************************************************************************************************************
- main.cpp
- #include "log_duration.h"
- #include <algorithm>
- #include <chrono>
- #include <cstdlib>
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<int> ReverseVector(const vector<int>& source_vector) {
- vector<int> res;
- for (int i : source_vector) {
- res.insert(res.begin(), i);
- }
- return res;
- }
- vector<int> ReverseVector2(const vector<int>& source_vector) {
- vector<int> res;
- // будем проходить source_vector задом наперёд
- // с помощью обратного итератора
- for (auto iterator = source_vector.rbegin(); iterator != source_vector.rend(); ++iterator) {
- res.push_back(*iterator);
- }
- return res;
- }
- vector<int> ReverseVector3(const vector<int>& source_vector) {
- return { source_vector.rbegin(), source_vector.rend() };
- }
- vector<int> ReverseVector4(const std::vector<int>& source_vector) {
- std::vector<int> res(source_vector.size());
- std::reverse_copy(source_vector.begin(), source_vector.end(), res.begin());
- return res;
- }
- void Operate() {
- vector<int> rand_vector;
- int n;
- cin >> n;
- rand_vector.reserve(n);
- for (int i = 0; i < n; ++i) {
- rand_vector.push_back(rand());
- }
- if(n<=100000)
- {
- {
- LOG_DURATION("Naive");
- ReverseVector(rand_vector);
- }
- {
- LOG_DURATION("Good");
- ReverseVector2(rand_vector);
- }
- }
- else
- {
- {
- LOG_DURATION("Good");
- ReverseVector2(rand_vector);
- }
- {
- LOG_DURATION("Best");
- ReverseVector3(rand_vector);
- }
- {
- LOG_DURATION("Your");
- ReverseVector4(rand_vector);
- }
- }
- }
- int main() {
- Operate();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement