2009-10-16 6 views
4

다른 Silverlight 차트 라이브러리 (예 : Silverlight Control Toolkit, Visifire, Telerik)가 화면에로드되는 데 걸리는 시간을 측정하려고합니다.Silverlight 차트로드 시간 측정

제 문제는 컨트롤이로드되고 화면에서 드로잉이 시작될 때까지만 시간을 측정 할 수 있지만 애니메이션 효과 (예 : 점이 사라지는 점) 때문에 렌더링에 더 많은 시간이 걸리는 것입니다.

렌더링이 종료되었을 때 자동 검색 방법을 설정할 수 있습니까? 내 문제는 Silverlight Framework 요소의 Loaded 이벤트 처리기에서만 렌더링이 시작될 때 알려주는 것입니다.

은 다음과 실버 라이트 컨트롤 툴킷 내가 현재 사용하고 예제 코드가 같이

당신이 성능을 비교하려고하는 경우
public void Init() 
{ 
    Chart chart = new Chart(); // Init chart object 
    DataPointSeries series; 
    (...)// Init series, add lots of points, set data binding 
    Chart.Series.Add(series); // Add series to chart 
    chart.Loaded += new RoutedEventHandler(Chart_Loaded); 
    LayoutRoot.Children.Add(chart); 
    StartTimer(); // Start timer and wait for control to load 
} 

public void Chart_Loaded(object sender, RoutedEventArgs e) 
{ 
    StopTimer(); // Problem: rendering just started at this point, hasn't finished yet! 
} 

답변

4

일부 차트 라이브러리 및 일부 다른 차트 라이브러리에 대한 몇 가지 해결 방법을 발견했습니다.

던 대스 차트 :

Chart chart; 
Chart.ImageReady += new ImageDownloaded(Chart_ImageReady); // Stop timer at this event 

실버 라이트 툴킷 :

Chart chart; 
DataPointSeries series; 
Chart.Series.Add(series); 
Chart.Series[0].Loaded += new RoutedEventHandler(Chart_Loaded); // Stop timer at this event 

Steema TeeChart는 : 여기 이벤트는 내가 실제 측정 시간을 얻기 위해하는 후크 수 있습니다

TChart chart; 
chart.AfterDraw += new PaintChartEventHandler(chart_AfterDraw); // Stop timer at this event 

Telerik RAD 차트 :

RadChart chart; 
chart.DefaultView.ChartArea.Loaded += new RoutedEventHandler(Chart_Loaded); // Stop timer at this event 

Visifire

Chart chart; 
chart.AnimationEnabled = false; // Turn off animation 
chart.Loaded += new RoutedEventHandler(Chart_Loaded); // Stop timer at this event 

내가 이벤트에 훅 수없는 유일한 라이브러리가 적절한시기에 발사는 Infagristics Netadvantage 위해이었다.

2

, 내가 포함 생각 애니메이션 렌더링 시간을 결정하는 가장 좋은 방법이 아니다 다른 애니메이션은 완료하는 데 다른 시간이 걸리기 때문에 컨트롤의

테스트하는 동안 가능한 경우 애니메이션을 사용하지 않도록 설정하는 것이 좋습니다. Visifire에서 Chart의 AnimationEnabled 속성을 false로 설정하면 그렇게 할 수 있습니다. 다른 사람들에 대해 잘 알지 못합니다. 그리고 이러한 테스트를 수행하는 동안 많은 수의 데이터 포인트 (4K-5K)를 사용하여 차이점을보다 분명하게 나타낼 수 있습니다.