美文网首页
计算一个函数执行的时间

计算一个函数执行的时间

作者: 大啸 | 来源:发表于2020-08-07 13:43 被阅读0次

#include <iostream>

#include <functional>

#include <unordered_map>

#include <stdio.h>

#include <time.h>

#include <sstream>

#include <array>

#include <thread>

#include <chrono>

using MAP = std::unordered_map<std::string, std::string>;

const unsigned int ArraySize = 50000;

std::array<MAP, ArraySize> mapArr;

std::array<MAP, ArraySize> dstMap1;

std::array<MAP, ArraySize> dstMap2;

template<typename T, typename ... Args>

void printRuntime(T fn, Args&& ... args)

{

    auto cb = std::bind(fn, std::forward<Args>(args) ...);

    auto start1 = std::chrono::steady_clock::now();

    // std::this_thread::sleep_for(std::chrono::seconds(1));

    cb();

    auto end1 = std::chrono::steady_clock::now();

    auto time1 = (end1 - start1).count();

    std::cout << "Running time1: " << time1 << std::endl;

}

void mapTest1(std::array<MAP, ArraySize>& mapArr, std::array<MAP, ArraySize>& dstMap1)

{

    for(int i= 0; i < ArraySize; i++)

    {

        for(const auto& v : mapArr[i])

        {

            dstMap1[i].insert(std::pair<std::string, std::string>(v.first, v.second));

        }

    }

}

void mapTest2(std::array<MAP, ArraySize>& mapArr, std::array<MAP, ArraySize>& dstMap2)

{

    for(int i= 0; i < ArraySize; i++)

    {

        dstMap2[i] = std::move(mapArr[i]);

    }

}

int main()

{

    for(auto& v : mapArr)

    {

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

        v.insert(std::pair<std::string, std::string>("123456789", "abcdefg"));

    }

    printRuntime(mapTest1, mapArr, dstMap1);

    printRuntime(mapTest2, mapArr, dstMap2);

}

相关文章

网友评论

      本文标题:计算一个函数执行的时间

      本文链接:https://www.haomeiwen.com/subject/uyefdktx.html