생활
클래스의 갯수가 많아질수록 시스템이 느려지는 것에 기여를 많이 하나요?
일단 한번도 사람들이 사용할만한 프로그램을 만들어본 경험은 없습니다.
갈수록 기능 하나하나씩 붙이다보니 클래스가 자연스럽게 늘어나고 있습니다.
activity의 갯수와 클래스의 갯수가 계속 늘어나고 있는데 이런게 나중에 프로그램 구동속도에 영향이 큰지 궁금합니다.
그리고 이런것들을 관리하는 방법을 배우려면 자료구조를 배워야하나요?
3개의 답변이 있어요!
클래스의 개수는 프로그램 구동속도에 영향을 미치지 않습니다.
컴퓨터의 하드 디스크를 많이 쓴다고 컴퓨터 속도가 느려지지 않는 것과 비슷합니다.
컴퓨터를 켤 때 자동으로 시작되고 종료되지 않는 프로그램이 많다면 느려질 수 있겠지만
그런 게 아니라면 하드 디스크 사용량은 컴퓨터 속도에 영향을 주지 않습니다.
마찬가지로 클래스의 개수가 적더라도 메모리 관리를 잘 하지 못하면
클래스의 개수가 많지 않음에도 불구하고 프로그램 구동 속도에 유의미한 영향을 미칠 수 있습니다.
클래스의 숫자가 구동 속도에 영향을 미치는 것이 아니라 클래스로더의 숫자가 구동 속도에 영향을 미칩니다.
자바는 클래스가 클래스 로더에 의해 호출이되어 실행되는 구조를 가집니다.
예를 들면,
집에 하드 드라이브가 C, D 2개 있는 경우와 C, D, E, F 로 2000개 쯤 있다고 생각하면,
과연 구동 속도에 영향을 미치지 않을까요?
일반적인 상황은 클래스가 많아야 2000~3000개 입니다.
하지만 기업의 큰 시스템은 클래스가 수십만개가 넘는 경우도 있습니다.
당연히 속도에 영향을 미치고, 이를 최적화하기 위해 클래스로더를 분석하고 자바 메모리를 분석합니다.
그래서 최적의 상황을 고려한 자바 메모리 셋팅을 합니다.
안녕하세요.
간단하게 설명을 해드리면, 클래스나 함수가 늘어난다고 해서 구동속도에 영향을 미치진 않습니다.
중요한 것은, 해당 클래스와 함수를 얼마만큼 호출하여 어떻게 사용하는지가 속도에 영향을 줍니다.
일반적으로 반복문과 조건문에서 많은 영향이 있고, 분기하는 과정에서 자신의 의도하지 않게 사용되는 경우가 많습니다.
현업에서 흔히 하는 실수는 메모리에 올려놓고 삭제하지 않아 메모리 누수가 발생되거나, 오버로딩이 발생되는 경우 속도에 많은 영향을 끼칩니다.
주로 사용하는 클래스와 함수들을 DLL 등 동적 라이브러리를 통해 관리하면 좀더 효율적이고,
말씀하신 자료구조와 더불어 디자인패턴을 공부해 두시면 많은 도움이 될 것 같네요!
좋은 프로그래머가 되시길 기도하겠습니다!