- Discussion: Dependency property is much slower in WinUI 3 than in WPF
- Evaluate dependency property perf
- AppDpWpfCs: WPF C#
- AppDpUwpCs: UWP C#, .NET Native and CLR
- AppDpUwpCx: UWP C++/CX
- AppDpPr087Cpp: Project Reunion 0.8.7 Preview1 C++
- AppDpPr087Cs: Project Reunion 0.8.7 Preview1 C#
- AppDpPr086Cpp: Project Reunion 0.8.6 C++
- AppDpPr086Cs: Project Reunion 0.8.6 C#
- AppDpWas1Cs: Windows App SDK 1.0 C#
| 100K Writes, msec | WPF C# | UWP C# Ntv | UWP C# Clr | UWP CX | WAS 1 C# | PR .8.6 C# | PR .8.7 C# | PR .8.6 C++ | PR .8.7 C++ | |
|---|---|---|---|---|---|---|---|---|---|---|
| Min | 21 | 2935 | 2085 | 382 | 2101 | 1526 | 1471 | 306 | 245 | |
| WPF C# | 21 | 1.00 | 0.01 | 0.01 | 0.05 | 0.01 | 0.01 | 0.01 | 0.07 | 0.09 |
| UWP C# Ntv | 2935 | 139.76 | 1.00 | 1.41 | 7.68 | 1.40 | 1.92 | 2.00 | 9.59 | 11.98 |
| UWP C# Clr | 2085 | 99.29 | 0.71 | 1.00 | 5.46 | 0.99 | 1.37 | 1.42 | 6.81 | 8.51 |
| UWP CX | 382 | 18.19 | 0.13 | 0.18 | 1.00 | 0.18 | 0.25 | 0.26 | 1.25 | 1.56 |
| WAS 1 C# | 2101 | 100.05 | 0.72 | 1.01 | 5.50 | 1.00 | 1.38 | 1.43 | 6.87 | 8.58 |
| PR .8.6 C# | 1526 | 72.67 | 0.52 | 0.73 | 3.99 | 0.73 | 1.00 | 1.04 | 4.99 | 6.23 |
| PR .8.7 C# | 1471 | 70.05 | 0.50 | 0.71 | 3.85 | 0.70 | 0.96 | 1.00 | 4.81 | 6.00 |
| PR .8.6 C++ | 306 | 14.57 | 0.10 | 0.15 | 0.80 | 0.15 | 0.20 | 0.21 | 1.00 | 1.25 |
| PR .8.7 C++ | 245 | 11.67 | 0.08 | 0.12 | 0.64 | 0.12 | 0.16 | 0.17 | 0.80 | 1.00 |
| 100K Reads, msec | WPF C# | UWP C# Ntv | UWP C# Clr | UWP CX | WAS 1 C# | PR .8.6 C# | PR .8.7 C# | PR .8.6 C++ | PR .8.7 C++ | |
|---|---|---|---|---|---|---|---|---|---|---|
| Min | 3 | 37 | 108 | 56 | 125 | 103 | 79 | 19 | 17 | |
| WPF C# | 3 | 1.00 | 0.08 | 0.03 | 0.05 | 0.02 | 0.03 | 0.04 | 0.16 | 0.18 |
| UWP C# Ntv | 37 | 12.33 | 1.00 | 0.34 | 0.66 | 0.30 | 0.36 | 0.47 | 1.95 | 2.18 |
| UWP C# Clr | 108 | 36.00 | 2.92 | 1.00 | 1.93 | 0.86 | 1.05 | 1.37 | 5.68 | 6.35 |
| UWP CX | 56 | 18.67 | 1.51 | 0.52 | 1.00 | 0.45 | 0.54 | 0.71 | 2.95 | 3.29 |
| WAS 1 C# | 125 | 41.67 | 3.38 | 1.16 | 2.23 | 1.00 | 1.21 | 1.58 | 6.58 | 7.35 |
| PR .8.6 C# | 103 | 34.33 | 2.78 | 0.95 | 1.84 | 0.82 | 1.00 | 1.30 | 5.42 | 6.06 |
| PR .8.7 C# | 74 | 26.33 | 2.14 | 0.73 | 1.41 | 0.63 | 0.77 | 1.00 | 4.16 | 4.65 |
| PR .8.6 C++ | 19 | 6.33 | 0.51 | 0.18 | 0.34 | 0.15 | 0.18 | 0.24 | 1.00 | 1.12 |
| PR .8.7 C++ | 17 | 5.67 | 0.46 | 0.16 | 0.30 | 0.14 | 0.17 | 0.22 | 0.89 | 1.00 |
Above benchmarks taken with Release builds, with best of 5 samples.
WPF does not cross the ABI, thus the low numbers there.
The PropertyChanged handler accounts for most of the time in the C# scenarios:
| 100K Writes, msec | |
|---|---|
| UWP C# Ntv, with handler | 2935 |
| UWP C# Ntv, no handler | 541 |
| PR .8.7 C#, with handler | 1471 |
| PR .8.7 C#, no handler | 455 |
PR .8.7 C# Diagnostic Traces:
- Can't be used to launch a wapproj-based app
- No managed app detected, Start button disabled
- Can't be used to launch a packaged app:
Workaround for both is:
- Choose Target
- Installed App ...
- Launch an installed Windows Store App