获得以毫秒为单位的时差

时间:2015-07-18 04:42:05

标签: c++ time

我正在尝试做一些我认为非常简单的事情,但我到处寻找,我无法弄明白。我也是C ++的新手,并且对模板等没有很好的理解。

我只需要一个函数来测量从程序启动到某个点的时间(以毫秒为单位),如:

class timeCounter {

    private:
        long startTime;
        long currentTime;
        long timeDifference;
    public:
        long getTime();
}

timeCounter::timeCounter () {
    startTime = time.now();
}

long timeCounter::getTimePassed () {
    currentTime = time.now();
    timeDifference = timeNow - timeStart;
    return timeDifference;
}

我曾尝试clock() / CLOCKS_PER_SECONDS,但结果慢于一秒。

任何人都可以帮助我吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

我最近编写了一个类似的系统来获取游戏引擎的增量时间。

使用std::chrono库,这是一个例子:

#include <iostream>
#include <chrono>
#include <thread>

class timer
{
    // alias our types for simplicity
    using clock             = std::chrono::system_clock;
    using time_point_type   = std::chrono::time_point < clock, std::chrono::milliseconds > ;
public:
    // default constructor that stores the start time
    timer()
    {
        start = std::chrono::time_point_cast<std::chrono::milliseconds>(clock::now());
    }

    // gets the time elapsed from construction.
    long /*milliseconds*/ getTimePassed()
    {
        // get the new time
        auto end = clock::now();

        // return the difference of the times
        return (end - start).count();
    }

private:
    time_point_type start;
};

int main()
{
    timer t;

    std::this_thread::sleep_for(std::chrono::seconds(5));

    std::cout << t.getTimePassed();

    std::cin.get();
}