'연산시간'에 해당되는 글 1건

  1. 2006.10.23 for문 사용할 때와 수학식 사용할 때의 연산시간...

int int_test(void)
{
	double val1, val2;
	double remainder;
	double result=0;
	double small;
	double current;
	clock_t begin;
	
	std::cout << "10억과 1사이의 정수들의 합을 구합니다." << std::endl<<std::endl;
	
	//std::cin>>val1>>val2;
	//std::cout<<std::endl;
	
	val1=1000000000;
	val2=-100000000;
	
	begin = clock();                          // 측정시작
	result=(val1+val2)*(abs(val1-val2)-1)/2;  // 1. 공식을 사용한 코드
	current = (double)(clock() - begin) / CLOCKS_PER_SEC;	// 측정 끝 
	
	std::cout<<"1.공식사용 : "<<result<<std::endl;
	std::cout<<"1.연산시간 : "<<current<<std::endl;
	
	result=0;       
	remainder=abs(val1-val2);
	
	if(val1-val2>0) small=val2; else small=val1;
	
	begin = clock();                       // 측정시작
	for(double i=1;i<remainder;i++)        // 2. for문을 사용한 코드
	{                                      // 측정끝
		++small;
		result=result+small;        
	}
	
	current = (double)(clock() - begin) / CLOCKS_PER_SEC ;
	
	std::cout << "2. for문사용 : " << result<<std::endl;
	std::cout << "2. 연산시간 : " << current<<std::endl;
	
	return 0;
}




소스출처 : 데브피아 자유게시판


- 내 컴에서 결과 -

10억과 1사이의 정수들의 합을 구합니다.

1.공식사용 : 4.95e+017
1.연산시간 : 0
2. for문사용 : 4.95e+017
2. 연산시간 : 5.937

----------------------------------------------------------------------------
위의 간단한 코드가 많은 생각을 하게 만들었다...

평소의 나라면 누가 저런 문제를 냈다면 주저 없이 반복문 돌리고 끝냈을것 같다...

반복문이 편하기도 하지만 저런 공식 잘 모른다...ㅜ.ㅜ

결과가 저렇게 차이나는게 당연하지만 새삼 놀랬다...

역시 수학을 해야하나...진짜 하기 싫은 과목인데...피할수 없는 길인가보다.......
Posted by Gungume
,