zoukankan      html  css  js  c++  java
  • 将clock_t转化为秒值在Windows与Linux平台下的差别



    作者: theset  出自: http://www.linuxdiyf.com
    一样平凡巨大写测试措施的时分常常要计算措施执行的时辰,尤其是近来训练Intel多核编程时,需求判断翻开openmp参数与否的执行时辰的对比。

    平凡代码是如许写的:


    #include
    clock_t start, stop;
    ....
    start = clock();
    do_something();
    stop = clock();
    printf("%f", (double)(stop-start)/1000.0) ;
    .....

    大概是求以后时辰的秒值:

    double t = (double) clock()/1000.0;

    但是如许的代码在Windows平台下是正确的(固然会如许写也是因为上Intel培训课时,例程都是这么写的),而到了Linux平台下,这个措施就错了,会发明时辰一下多了1000倍。

    究竟上,clock_t的值转换为秒应该是除以CLOCKS_PER_SEC这个宏,而这个宏在Windows平台下是1000,而到了Linux平台下便是1000000了。

    因此措施正确的写法是:

    #include
    clock_t start, stop;
    ....
    start = clock();
    do_something();
    stop = clock();
    printf("%f", (double)(stop-start)/(double)CLOCKS_PER_SEC) ;
    .....

    如许才干担保措施在跨平台移植时的正确性。




    版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始因由 、作者信息和本声明。不然将追查执法责任。

  • 相关阅读:
    删除链表的倒数第N个节点(java实现)
    Java多线程之volatile关键字《一》
    Utils
    分布式和集群
    java RMIC
    Log4j输出终端(Appender)详解
    使用存储过程并返回值与及返回值的获得方法
    groupBy
    group by java实现
    本机Font字体
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1973802.html
Copyright © 2011-2022 走看看