当前位置: 首页 > 知识库问答 >
问题:

C中的实际毫秒

笪波鸿
2023-03-14

在Java中像< code > system . current time millis()这样的C程序中,有可能得到实际的毫秒数吗?我知道< code>time(),但是我认为它不足以精确地测量短时间,不是吗?

共有3个答案

长孙和悦
2023-03-14

如果你有可用的C 11支持,你可能想看看< code>std::chrono。

#include <iostream>
#include <chrono>
#include <ctime>

long fibonacci(int n)
{
    if (n < 3) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}

int main()
{
    std::chrono::time_point<std::chrono::system_clock> start, end;
    start = std::chrono::system_clock::now();
    std::cout << "f(42) = " << fibonacci(42) << '\n';
    end = std::chrono::system_clock::now();

    std::chrono::duration<double> elapsed_seconds = end-start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);

    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s\n";
}

否则,您可以使用C风格的std::time,如下所示:

#include <ctime>
#include <iostream>

int main()
{
    std::time_t result = std::time(NULL);
    std::cout << std::asctime(std::localtime(&result))
              << result << " seconds since the Epoch\n";
}
唐法
2023-03-14

在C中,您还有时钟()

#include <time.h>

...

clock_t start = clock();
... some processing ...
clock_t stop = clock();

double elapsed = double(stop - start) / CLOCKS_PER_SEC;

还有其他更准确的测量时间的方法,但是它们更依赖于您在哪个系统上运行程序。

呼延震博
2023-03-14

这是当今语言标准的一部分(现在已经有几年了):

在Coliru现场观看

#include <chrono>
#include <iostream>

int main()
{
    using namespace std::chrono;

    auto epoch = high_resolution_clock::from_time_t(0);
    // ...
    auto now   = high_resolution_clock::now();

    auto mseconds = duration_cast<milliseconds>(now - epoch).count();

    std::cout << "millis: " << mseconds;
}
 类似资料:
  • 本文向大家介绍C#实现毫秒转换成时分秒的方法,包括了C#实现毫秒转换成时分秒的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现毫秒转换成时分秒的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我正在使用毫秒在Java中进行一些日期计算,并注意到以下问题: 我知道1年 大约 是31,556,952,000毫秒,所以我的乘法不知何故。 谁能指出我做错了什么?我应该使用很长时间吗? 问题答案: 我应该使用很长时间吗? 是。问题是,由于等等都是s,当您将它们相乘时会得到一个。你是转换到一个,但只有 后 的乘法已经导致了错误的答案。 要解决此问题,您可以将第一个强制转换为:

  • 问题内容: NLTK书中有几个字数示例,但实际上它们不是字数而是令牌数。例如,第1章“计数词汇”说以下内容给出了单词计数: 但是,事实并非如此-它给出了单词和标点计数。如何获得真实的字数(忽略标点符号)? 同样,如何获得一个单词的平均字符数?显而易见的答案是: 但是,这将因为以下原因而关闭: len(string_of_text)是一个字符数,包括空格 len(text)是令牌计数,不包括空格,但

  • 我对. NET/C#的留档感到困惑,关于关键字vs/和。我试图了解易失性字段的确切保证以及这些方法到底在做什么。 我认为volatile提供了发布/获取语义,但它提供了线程的文档。VolatileRead让我怀疑自己的理解是否正确。 这是volatile的语言参考:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/k

  • 问题内容: 我的程序有问题。我想在1秒内获得等于1000的实时毫秒数。这是我的代码: 还有什么其他方法可以获取毫秒而不是声明整数并递增呢? 问题答案: 您将希望摆脱它,而使用Swing计时器代替它,因为那是Timer的用途-在Swing GUI中重复进行调用, 而 不必求助于破坏线程的构造。 您将需要给您的计时器一个合理的延迟时间。0?常识告诉您不要使用此功能。12、15-更好。 为了使Swing

  • 本文向大家介绍将容量设置为C#中SortedList对象中元素的实际数量?,包括了将容量设置为C#中SortedList对象中元素的实际数量?的使用技巧和注意事项,需要的朋友参考一下 要将容量设置为SortedList对象中元素的实际数量,代码如下- 示例 输出结果 这将产生以下输出- 示例 现在让我们来看另一个示例- 输出结果 这将产生以下输出-