You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
다음은 주석이 있는 자바 파일과 주석이 없는 자바 파일을 각각 생성해주는 자바스크립트 파일입니다.
constfs=require('fs');constcode="//주석입니다\n".repeat(10000000);constjavaTextFile=`public class Comment{ public static void main(String ...args){${code} }}`;fs.writeFile("Comment.java",javaTextFile,()=>{});constnoCommentJava=`public class NoComment{ public static void main(String ...args){ }}`fs.writeFile("NoComment.java",noCommentJava,()=>{})
실제 빌드 시간은 확실하게 차이가 있는 것 같습니다.
Comment.java 는 대략 10000000줄이 넘는 주석이 있는 코드이고 밑에 NoComment.java 는 아무것도 없는 파일입니다.
반면에 실행시간은 거의 차이가 없었습니다.
그렇다면 과연 주석이 아닌 다른 코드라면 빌드 시간이 차이가 나는지 궁금해서 한번 추가로 스크립트를 작성해봤습니다.
fs.writeFile("Code.java",`public class Code{ public static void main(String ...args){${newArray(10000000).fill(0).map((_,index)=>index).map((index)=>`final var variable${index}=1;`).join(" ".repeat(8)+"\n")} }}`,()=>{})
variable{0…1000000} 변수들에 1을 대입하는 코드입니다.
처음에는 주석이 빌드시간에 영향을 준다고 생각했지만 단순히 컴파일러가 소스코드를 읽는 시간에 불과하다는 생각이 듭니다.
결국 주석으로 채워진 자바 코드와 변수 대입으로 채워진 자바코드를 각각 실행시켜보면 변수 대입으로 채워진 코드의 빌드시간이 더 느리다는 것을 알 수 있습니다.
결론
개인적인 견해로 주석은 빌드, 런타임시간에 그렇게 큰 영향을 주는 것은 아니다 라고 생각합니다.
🤔 왜 이슈를 생성했나요?
주석(어노테이션을 제외한 // /**/)은 로직에 영향을 주지 않습니다. 그렇다면 성능에도 영향을 주지 않을까요? 런타임과 빌드타임 관점에서 궁금증이 들어서 확인해봤습니다. 과연 성능에 차이가 생겼을까요? 차이가 났다면 얼마나 생겼을까요!
😁 공유하고 싶은 내용 : 주석은 성능에 영향을 미치지않는다고 했는데, 정말일까?
들어가며
대충 감은 잡히시겠지만! 한번 생각해보시면 좋을 것 같습니다.
그리고 생각하신 결과와 같은지 비교해보시면 재밌을 것 같아요 😄
_
결과
프로그래밍에서 주석은 코드를 이해하고 유지보수할 때 매우 유용합니다. 그러나 이러한 주석이 프로그램의 성능에 영향을 미치지 않는다는 것이 일반적인 생각입니다.
그렇다면 주석이 코드의 성능에 영향을 미치지 않을까요? 이 질문에 대한 답은 "그렇지 않다" 입니다. 주석은 프로그램의 런타임 성능에는 영향을 미치지 않습니다. 그러나 빌드 타임에는 영향을 미칠 수 있습니다.
아래 테스트를 참고해주세요 :)
테스트
단순한 주석으로 50만 라인(80mb)을 채우고, 빌드 타임 및 런타임 성능을 비교했습니다.
테스트 결과
런타임 확인 결과
빌드 타임 확인 결과
📌 참고자료, 공유하고 싶은 자료
_
인텔리제이에서 크기가 큰 파일을 허용하지 않습니다. 기본적으로 파일 크기를 2.5메가로 제한하고 있습니다. 먼저 큰 파일을 IDE에서 접근할 수 있도록 설정을 수정합니다.
[IntelliJ][이슈] The file size exceeds the configured limit. Code insight features are not available.
[IntelliJ] The file size ... exceeds configured limit ... Code insight features are not available 에러 해결방법
또한 빌드 시 Out Of Memory 에러가 발생하면, 인텔리제이에서 메모리 사이즈를 늘려야 합니다.
The text was updated successfully, but these errors were encountered: