코드 복잡도가 컴파일 시간에 미치는 영향
- 업데이트 날짜:2025-08-27
- 1분 (읽기 시간)
LabVIEW가 VI를 컴파일할 때 마다 컴파일러는 VI의 궁극적인 실행 속도를 최대화하기 위해 블록다이어그램에 특정 최적화를 적용합니다. 이러한 최적화를 수행하려면, 컴파일러는 기존 코드를 분석하여 최적화가 가능한 부분 및 최적화로 인해 이득을 얻는 부분을 찾아야 합니다. 이러한 분석은 VI의 코드 복잡도에 비례하는 양의 메모리와 시간을 필요로 합니다. 그러므로, VI 안에 있는 코드의 양이 늘어날수록, 컴파일러가 최적화를 수행하는데 걸리는 메모리와 시간도 증가합니다.
극히 복잡한 VI를 최적화하는데 소요되는 메모리 때문에, 컴파일러가 이러한 VI를 컴파일할 때, 메모리를 소진하거나, 상당한 지연이 발생할 수 있습니다. 상당수의 VI에서 이러한 문제를 방지하기 위해 컴파일러는 각 VI의 복잡도를 컴파일러 최적화 임계점과 비교하며, 이 때 컴파일러 최적화 임계점은 VI의 복잡도가 일정 수치를 초과하여 컴파일러가 많은 메모리를 사용하는 최적화를 제한하기 시작하는 지점입니다. 그러나, 최적화를 제한하면 VI가 최대 실행 속도를 얻지 못하게 됩니다. 그러므로, 복잡한 VI에서 컴파일러는 편집기 응답 및 VI 실행 속도 중 하나를 선택하고 나머지 하나를 희생하게 됩니다.
VI를 여러 개의 SubVI로 나누어 이를 방지할 수 있습니다. 이렇게하면 편집기 응답이 향상되고, 실행 속도가 최적화되며, 코드의 관리가 용이해지고 가독성이 향상됩니다. 그러나 효과적으로 여러 SubVI로 나눌 수 없는 VI의 경우, LabVIEW는 사용자가 임계점을 조정하여 다음과 같은 문제를 해결하도록 합니다:
- VI를 컴파일하거나 어플리케이션을 만드는 도중 LabVIEW의 메모리가 소진됩니다.
- VI를 컴파일하거나 어플리케이션을 만드는 도중 LabVIEW에 상당한 지연이 나타납니다.
- 편집을 마친 후, VI 또는 어플리케이션을 최대 실행 속도로 컴파일하려고 합니다.