2D 및 3D Math 플롯 그래픽 업데이트의 버퍼링 및 속도 저하

업데이트 됨 Feb 27, 2020

해당 제품

Software

  • LabVIEW

문의사항

데이터를 2D 및 3D 그래프에 매우 빠르게 플롯하는 VI를 실행할 때 그래프의 시각적 업데이트가 매우 느립니다. VI를 멈 추면 버퍼가 지워지는 것처럼 보이고 그래프는 나머지 모든 포인트를 매우 빠르게 업데이트합니다. 이 문제의 원인은 무엇입니까?

해결책

이 동작은 예상되는 현상 입니다. 점유된(실행중인) VI가 단일 스레드에서 실행되고 있고  XControl에 데이터 변경 이벤트를 지속적으로 생성하기 때문에 발생합니다. XControl은 생산자 / 소비자 아키텍처와 유사하게 다른 스레드에서 데이터 변경 이벤트에 응답합니다. 많은 수의 매트릭스 계산 및 객체 다시 그리기가 단일 루프보다 더 많은 시간이 걸리기 때문에 소비자가 생산자보다 느리게 실행됩니다. XControl은 데이터 변경 이벤트를 버퍼링하고 순차적으로 응답합니다. 소유 한 VI가 정지하더라도 XControl은 다른 스레드에서 실행되기 때문에 모든 이벤트에 응답 할 때까지 계속 실행됩니다.

이 문제를 피하기위한 몇 가지 해결 방법과 권장 사항이 있습니다.
  • 루프 내에서 인디케이터를 사용하지 마십시오. 루프가 완료된 후 데이터를 인디케이터에 플로팅합니다.
    • 루프에서 인디케이터를 사용해야하는 경우 기다림 함수을 사용하여 루프 반복을 느리게하십시오.
    • 루프 내에서 또는 병렬로 다른 사용자 인터페이스 작업을 피하십시오.
  • 많은 양의 데이터 세트와 함께 인디케이터를 사용하지 마십시오.
    • 많은 양의 데이터 세트가 있는 경우 데이터를 간소화시켜 인디케이터에 보내십시오. 예를 들어 인접 지점의 평균을 구하고 평균값을 인디케이터로 보냅니다.
    • 루프 내에서 LabVIEW 메모리 관리자를 호출하지 마십시오. 이러한 호출은 특정 배열 기능을 사용할 때 이루어집니다. 더 자세한 정보는 VI Memory Usage를 참조하십시오.
  • 인디케이터의 성능은 시스템에 따라 다릅니다. 프로그래밍시 배포 시스템과 개발 시스템 기능을 모두 고려해야합니다.