动画性能比对:WPF / WinUI3 / WebView2

丝滑流畅的高性能动画,对于做一个具有高级感体验的应用来说至关重要。

我最开始是想比对WPF在.Net Framework 462 和 .Net8.0之间进行比对,我原本希望WPF在.Net8.0 UI表现上有肉眼可见的进步,但是比对下来之后,在高压力的UI动画方面基本上没变化,因此暂时不讨论WPF在8.0上面的表现,跳过。我们暂时认为WPF在任何框架上的表现都是类似的;

另外,在嵌入webview2浏览器时,是嵌入到.Net Framework462 还是嵌入到 WinUI3 我也分别进行了比对,但是它们的表现也基本上是看不出来差异,所以这里我们就只区分 WPF / WinUI3 / WebView2 这三种框架。

测试主机的参数如下:

处理器 Intel(R) Core(TM) i9-14900HX 2.20 GHz

机带 RAM 32.0 GB (31.7 GB 可用)

系统类型 64 位操作系统, 基于 x64 的处理器

版本 Windows 11 家庭中文版

版本号 24H2

操作系统版本 26100.3775


基础动画 - 单次

对200张图片进行旋转动画:

WPF: 卡顿的快要动弹不了了,惨不忍睹,体验极差:

WebView2: 丝滑流畅,用平和的减速表现柔和,但是实际帧率一般:

WinUI3: 绝对的硬实力,快得都要看见残影了:


基础动画 - 多次

连续中断地触发多次动画:

WebView2:

WinUI3:

WebView2 和 WinUI3都表现流畅,但是中间有个小插曲,WebView2在二次、三次触发的时候没有清空之前旧的元素,会导致相当卡顿;但是WinUI3完全不受影响。整体来说WinUI3仍然表现更优。


粒子动画 - 3000粒子

WPF:勉强能跑动的感觉,基本带不起来粒子动画:

WebView2: 轻松胜任,丝滑流畅,甚至极其流畅:

WinUI3:流畅,但是貌似不如WebView2更丝滑,差强人意:


粒子动画 - 30000粒子

WPF:完全跑不动了:

WebView2: 像是结冰的感觉,缓慢,很吃力:

WinUI3:仍然极其流畅,与3000粒子的效果相比,由于粒子数量更多,反而看到速度有更快的错觉,性能完全没有受到影响(但是总感觉它的形态缺少一点柔和美,太直接了):


结论

如果 "体验感" 作为第一考量维度,那么 WinUI3是首选,WebView2基本可以胜任,WPF几乎不可胜任。

相关推荐
柒.梧.2 天前
基于SpringBoot+JWT 实现Token登录认证与登录人信息查询
wpf
十月南城5 天前
Flink实时计算心智模型——流、窗口、水位线、状态与Checkpoint的协作
大数据·flink·wpf
听麟8 天前
HarmonyOS 6.0+ 跨端会议助手APP开发实战:多设备接续与智能纪要全流程落地
分布式·深度学习·华为·区块链·wpf·harmonyos
@hdd8 天前
Kubernetes 可观测性:Prometheus 监控、日志采集与告警
云原生·kubernetes·wpf·prometheus
zls3653658 天前
C# WPF canvas中绘制缺陷分布map
开发语言·c#·wpf
专注VB编程开发20年8 天前
c#Redis扣款锁的设计,多用户,多台电脑操作
wpf
闲人编程9 天前
定时任务与周期性调度
分布式·python·wpf·调度·cron·定时人物·周期性
zls3653659 天前
C# WPF canvas中绘制缺陷分布map并实现缩放
开发语言·c#·wpf
数据知道10 天前
PostgreSQL:Citus 分布式拓展,水平分片,支持海量数据与高并发
分布式·postgresql·wpf
闲人编程11 天前
Redis分布式锁实现
redis·分布式·wpf·进程··死锁·readlock