请教大神看看这两段代码的运行效率
查看原帖
请教大神看看这两段代码的运行效率
409668
skyofzhou楼主2020/10/20 10:17

代码1

int a,b,c,d;
    cin>>a>>b>>c>>d;
    int min;
    min = c * 60 - a * 60 + d - b; //将时间全部转化为分钟,计算共用的分钟
	cout<<min/60<<" "<<min%60; 

这里就是简单的将时间全都转化为当天0点的分钟后相减,很好理解,代码也很简单,运算上也只有一两步简单的加减乘除。

代码2

int start_h,end_h,start_m,end_m;
    cin>>start_h>>start_m>>end_h>>end_m;
    int hour = 0,min = 0; //定义用的小时和分钟 计时器 
    while(1>0)
    {
    	start_m = start_m + 1; //过了1分钟 
    	min = min + 1; // 计时1分钟 
    	if (min == 60) //如果计时器达到60分钟 
    	{
    		hour = hour + 1; //计时器小时数+1 
    		min = 0; //计时器分钟数归0 
		}
		if(start_m == 60)  //当前时间分钟达到60 
		{
			start_m = 0;  //当前时间 分钟归0 
			start_h = start_h + 1; //当前时间小时+1 
		}
		if (start_h == end_h && start_m == end_m) //当前时间达到指定结束时间 
		{
			break;  //跳出循环 
		}
		
	}
    
	cout<<hour<<" "<<min; 

这段代码我是模拟了时钟的运行,用了每次循环加1分钟的方式来计算时间。除了循环还有各种条件的判断,代码更加复杂。

我直觉上代码1的运行效率应该更高,但是实际从洛谷编译运行的时间来看,代码2比1运行效率有将近30%的提升,请大神给与指点。

2020/10/20 10:17
加载中...