vs2019로 아래꺼 다 테스트해봄
500만번 0.5곱하기 vs 500만번 2나누기
1억번 0.5곱하기 vs 1억번 2나누기
10억번 0.5곱하기 vs 10억번 2나누기
500만번 0.1곱하기 vs 500만번 10나누기
1억번 0.1곱하기 vs 1억번 10나누기
10억번 0.1곱하기 vs 10억번 10나누기
500만번 0.33333곱하기 vs 500만번 3나누기
1억번 0.33333곱하기 vs 1억번 3나누기
10억번 0.33333곱하기 vs 10억번 3나누기
피연산자는 몇을 하든 의미없고
나누든 곱하든 똑같더라
곱하기 vs 나누기에서 연산시간은 오직 연산횟수에만 영향받았음
이거 컴파일러가 자동으로 나누기를 곱하기로 바꿔준거냐?
대략적인코드============================================
auto start = std::chrono::high_resolution_clock::now();
testType x = testOperand;
for (__int64 i = 0; ++i) {
x / 10.0; ( x /= 10.0 이것도 해봄 )
}
auto finish = std::chrono::high_resolution_clock::now();
(finish - start 해서 대충 시간 출력하는 코드)
해당 댓글은 삭제되었습니다.
코드 올림. 설정 암것도 안 건든 순정vs2019임. 근데 컴파일러가 바꿔준건 맞는듯
대입연산자로 바꿔주니까 1.33배 정도 차이남. 대입연산자가 없으면 해당 statement가 의미없다고 판단해서 생략하나봐요
이 생략되는걸 이용해서 순수 곱셈 나눗셈 시간차만 계산해보면 저도 2배 정도 나옴 ㄳㄳ
그 말씀하신 최적화 설정도 찾음. /O 옵션을 /O2로 바꿔주니까 곱셈 나눗셈 속도가 똑같아 졌고 전체적으로 조낸빨라짐.
시간복잡도는 그런 미세한 동작까지 고려안한다 기본 연산만 세서 정의함 니가 말하는거는 전자과 애들이 하는거
시간복잡도고뭐고 내가그냥 chrono 써서 시간 측정한거임
아 시간복잡도 계산할 때는 이딴거 신경 안쓴다는 의미?