AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

避开使用 XAML 的性能陷阱

  • 2012-02-28
  • 本文字数:652 字

    阅读完需:约 2 分钟

虽然 DependencyProperty 和 DependencyObject 是实现大部分 XAML 特性的基础,但是它们也会带来一些性能开销。MSDN 上的一篇文章《 XAML 平台上的 C#优化》(Optimizing C# for XAML Platforms)详细讨论了该问题,并给出了一些解决方案以尽量减少由此造成的性能影响。

访问和设置 DependencyProperty 值的响应时间要比访问 CLR 属性的时间长上几个数量级。这在低性能硬件(如 Windows 7 Phone)以及紧密循环或复杂 LINQ 语句中尤为明显。文章中提出了一些解决方案,包括:

  • 能用 CLR 属性完成工作就不要用 Dependency 属性;
  • 缓存 DependencyProperty 以避免反复进行 get 操作;在 set 操作前先行比较新值与当前值(这是因为重复设置属性值与设置新值的代价一样高)。此类优化可以在含有属性的类中完成,或者在代码调用前(例如在遍历循环前)完成;
  • 考虑 LINQ 查询的复杂度(如查询所需要遍历全部条目的总次数)之后,再决定是使用它还是回归到编写循环;
  • 避免使用延迟初始化(lazy initialization),如果它会带来更多的工作量(如在循环内部时);
  • 如果在 ItemControl 内部使用 Panel 来实现多条目,请使用支持虚拟化的 panel,例如 VirtualizationStackPanel。

使用 XAML 大展身手的两处地方——一处是在 WPF 客户端上实现富客户端体验 / 媒体;另一处是在硬件资源受限的 Windows Phone 平台上。由于两者都需要良好的性能,因此了解这些内在原理以编写出高性能代码是值得的。

关于特定平台上的性能注意事项,请查阅 MSDN 上的以下资料:

查看英文原文: http://www.infoq.com/news/2012/02/performance-xaml

2012-02-28 08:391969
用户头像

发布了 125 篇内容, 共 41.5 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

福昕软件与中国船级社签署框架合作协议,共建数字船舶发展新高地

联营汇聚

恒源云(Gpushare)_UNIRE:一种可以共享标签空间的方法

恒源云

OpenCV 计算机视觉 服务器

数字化背景下,为何J2PaaS低代码平台,能成为企业技术升级的优选?

J2PaaS低代码平台

低代码 数字化 企业数字化转型 低代码平台 企业级低代码平台

Shopee Games 游戏引擎演进之路

Shopee技术团队

前端 游戏开发 egret 游戏引擎

NFT卡牌盲盒游戏系统开发搭建

薇電13242772558

NFT

TiDB 5.4 发版丨新功能解读

PingCAP

云原生背景下的应用安全建设

火线安全

云原生 云安全

【C语言】结构体

謓泽

C语言 结构体 3月月更

MongoDB常见问题解答:时间与时区

MongoDB中文社区

mongodb

如何为招聘机构选择CRM系统

低代码小观

低代码 企业管理 企业管理系统 CRM系统

进入2022年,移动互联网的小程序和短视频直播赛道还有机会吗?

BeeWorks

大数据培训:Kafka存储结构及Log清理机制

@零度

大数据 kafka log

高级IO模型之kqueue和epoll

程序那些事

Java io nio 程序那些事 3月月更

深度文 | 一文看懂云原生时代 DevOps 如何选型

星汉未来

运维 云原生 降本增效

记某核心MongoDB集群索引优化实践

MongoDB中文社区

mongodb

科创人·弘玑Cyclone CEO高煜光:从RPA到超自动化,以客户需求构建战略纵深

科创人

带你掌握Redis数据类型:string和Hash

华为云开发者联盟

redis string hash 数据类型

JAVA只要掌握内部类,多继承和单继承都不是问题

华为云开发者联盟

Java jdk 多继承 内部类 单继承

基于大数据的医疗健康疾病筛查及风险评估系统

Geek_7jiynf

医疗方案 医疗AI 医疗信息化

网络安全:小记一次代码审计

网络安全学海

网络安全 信息安全 渗透测试 安全漏洞 代码审计

什么是SDK,它是怎样威胁我们的隐私?

郑州埃文科技

fastposter v2.5.1 发布 轻松在线作图

物有本末

直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践

BeeWorks

基于Java+SpringMVC+MySql+Layui+H5实现企业门户网站

Geek_7jiynf

网站建设

云开发在教育应用开发、运维全流程实践

阿里云云效

云计算 阿里云 DevOps 云原生 开发

【数据库】云数据库rds是什么意思?有什么优势?

行云管家

数据库 云数据库 RDS

车辆GPS定位整套管理系统,轨迹播放,车辆管理,电子围栏,报警记录,数据库/人员定位/宠物定位/物流跟踪/资产定位

Geek_7jiynf

Java Java web GPS

理想很丰满,现实很骨感,坎坷前行的区块链产业化路在何方?

Akumas

区块链 数字化转型 新基建 十四五规划

Apache Flink 在移动云实时计算的实践

Apache Flink

大数据 flink 开源 编程 实时计算

【云计算】云计算六大优点简单说明

行云管家

云计算 IT 企业上云 IT运维

加入XTransfer,和技术大咖一起大展身手!

XTransfer技术

程序员 招聘 跨境支付

避开使用XAML的性能陷阱_语言 & 开发_Roopesh Shenoy_InfoQ精选文章