在程序中获取当前时间:DateTimeNowToString()
简单的,在程序运行时直接获取当前时间可以理解为第一次运行时间
至于编译时候是不对注册表有任何修改的,运行时候也是。除非你运行的程序中有修改注册表的代码,运行时才会对注册表进行 *** 作。
#include<timeh>
#include<stdioh>
int main(){
time_t st_t=time(NULL),ed_t;
//do something
//finish
ed_t = time(NULL);
printf("%lf\n",((double)(ed_t-st_t))/CLOCKS_PER_SEC);
}
但是注意,因为OS调度的原因,输出的时间是程序运行的时间,不等同于进程真正的执行时间,进程真正执行的时间用这个方法是获取不到的,要用其他方法。OJ的后台程序判断的是你进程的真正执行时间。一个稳定的系统上两个时间之间大概有一个比例的,例如我的机器上如果输出了8,那么可能可以通过OJ上时限为1s的题目。
linux下,如果你想获取进程的真正执行时间用time命令就可以了。可执行程序名为ao的话。
time ao
就可以看到
1、在程序最开始的地方获取一下系统当前时间并保存;
2、在程序结束的地方获取一下系统当前时间并保存;
3、两者相减即为程序运行时间,将其打印出来便可。
参考代码如下:
#include <stdioh>#include <timeh>
void main()
{
int i;
clock_t t1 , t2;
t1 = clock();
for (i=0;i<1000000000;i++);
t2 = clock();
printf("%d \n", t2-t1);
}
clock()函数,计算代码消耗的cpu时间,一般用处不大
time()函数,获取系统时间,许多依赖于time()计算超时的程序,在修改系统时间后一般都不能正常运行。
因此本人推荐:
windows下:计算绝对时间QueryPerformanceCount/QueryPerformanceFrequency
cpu脉冲计数/ cpu频率,获得开机以来的秒数。
当然,这两个函数获得时间精度是很高的(us级别),只是我们一般用不到这么精确。
linux下:
#include <sys/sysinfoh>
调用sysinfo()获得系统启动以来经历的秒数时间。这个不属于高精度计时。
如果要进行高精度计时,高精度时间,C运行库的gettimeofday()(当然据我估计也是受到系统更改时间的影响)。
用绝对时间判断系统时间有没有被更改,用高精度时间精确计时,二者结合才是王道。
abstract class GetTime {
public final void getTime() {
long start = SystemcurrentTimeMillis();
runcode();
long end = SystemcurrentTimeMillis();
Systemoutprintln("运行时间:" + (end - start) + "毫秒");//应该是end - start
}
public abstract void runcode();
}
public class SubTime extends GetTime {//建立一个java文件为SubTimejava,SubTime为主类,加为public
public void runcode() {
for (int x = 0; x < 4000; x++) {
Systemoutprintln(x);
}
}
static public void main(String args[]) {//写一个主函数就好了
new SubTime()getTime();//建立对象调用getTime();
}
}
可以用eclipse运行
以上就是关于C#中如何获程序第一次运行的时间全部的内容,包括:C#中如何获程序第一次运行的时间、C++中如何测定程序运行所用时间、用C语言如何打印出一段程序运行的时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)