For INPC code vs non standard code, there are some steps we can follow:
private double? _q;
public double? Qty
{
... NotifyPropertyChanged(this,"Qty");
}
private double? _q;
public double? Qty
{
get { return GetQty(0); }
set { _bidQtys[0] = value; } // by adding NotifyPropertyChanged(this,"Qty") here speed will pick up to standard INPC
(1) generate stressfull/human data 1ms, 10ms 250ms and bind to WPF Xaml UI
d = Observable.Interval(TimeSpan.FromMilliseconds(1)).Delay(TimeSpan.FromSeconds(20)).Subscribe((ms) =>
{
Random r = new Random();
for (int i = 0; i < FakeData.Count; i++)
{
FakeData[i].Qty = -1000 * r.NextDouble();
(2) Perforator:FRPS/DRAR higher=> data updates faster (Key Observation: INPC has 9x FRPS than non-standard that use intermediate storage
(3) VisualProfiler CPU %
DispatcherInvoke -- Dispatcher Operation, Increasing to high=> buggy code, e.g too many timer pushing UI
Rendering Thread --- Unmanaged render pass (Brushed, tessalation, call DirectX), find only the visual element and draws
the whole window at a 60 FPS as default, popularly called as Composition Thread , Graphics acceleration uses Channel
Protocol to communicate with the other thread. High and increasing % => need to Profile to feed XPerf, GPUViwer, WPA,
etc in Windows Performance ToolKit.
Layout ---measure/arrange passes higher => variable/Compute control size, fast changing text, bad GPU/Box.
(4) 1ms -- most stressful 10ms -- Physical limit 16ms per frame =60 FRPS, 250 Human eyeball, Win8 App Fast= 100-200ms
Friday, October 31, 2014
Comparing code using WPF Perforate and Visual Profiler
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment