for(int i=0;i<5;i++)
System.out.printf("%d\n",i);
이거랑
System.out.printf("%d\n",0);
System.out.printf("%d\n",1);
System.out.printf("%d\n",2);
System.out.printf("%d\n",3);
System.out.printf("%d\n",4);
이게 있으면 결과는 당연히 똑같은데
위에꺼는 수행을 하려면
일단 반복문에 필요한 변수i가 필요하고
조건확인->수행->결과->조건확인->수행->결과 로 계속 반복하는거잖음
그러면 그냥 요즘 씨피유로 그딴거 속도차이가 안난다 이런거 말고
저렇게 채우는 배열이 유동적이 아니라 어느정도 고정적일때는 위쪽보단 아래쪽이 효율성이 높은건지 궁금함
그리고 또 저런 반복문 안에다가 if하나만 들어가도
for(int i=0;i<5;i++)
if(i!=2)
System.out.printf("%d\n",i);
System.out.printf("%d\n",0);
System.out.printf("%d\n",1);
if(2!=2)
System.out.printf("%d\n",2);
System.out.printf("%d\n",3);
System.out.printf("%d\n",4);
이렇게되면 반복문 한번 돌때마다 또 조건문을 수행하니까 훨씬 더 비효율적으로 되는게 아닌지
그렇게 따지면 할말은 없지만, i는 어짜피 레지스터에 있기 때문에 1을 더하는 연산이 그렇게 시간을 잡아먹는 연산이 아님. 또한 비교 연산 역시도 printf보다 시간이 훨씬 적게 걸림.
여기서 시간을 잡아먹는건 printf의 개수이고, 변수 i에 ++하는 것과 비교연산하는게 아님. 그러므로 코드의 가독성과 관리를 쉽게 하기 위해 위의 방법을 택하는 것이 좋음
감사
cx라는레지가 autoincrement하면서증가하는뎅 어셈에서는 loop라는문법인걸로암