【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

避开使用 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:391361
用户头像

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

关注

评论

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

软件研发效能度量的成功要素

思码逸研发效能

研发管理 研发效能 软件研发

百问百答第47期:极客有约——中信建投当前的监控体系建设情况

博睿数据

智能运维 博睿数据 中信建投 监控体系 系统监测

国际顶会OSDI首度收录淘宝系统论文,端云协同智能获大会主旨演讲推荐

阿里巴巴大淘宝技术

人工智能 #开源

浅析 Apache Kafka 分区重分配的实现原理

移动云大数据

kafka 开源

函数递归习题(easy版)

芒果酱

c++ C语言 7月月更

庖丁解牛,复盘 HiveServer2 连接频繁卡顿问题

移动云大数据

大数据 hive

嵌入式操作系统多任务调度原理分析与RUST参考实现

Geek_0185b7

云原生、Intel Arch及云原生机密计算 3 大 SIG 在线分享!今天见 | 第 32-34 期

OpenAnolis小助手

开源 云原生 虚拟化 龙蜥大讲堂 SIG双周会

编程技巧│超实用 nginx 中常见的配置合集

nginx 运维 经验分享 7月月更

小程序技术解决桌面应用敏捷迭代的一种思路

Speedoooo

小程序 移动开发 小程序容器 桌面应用

如何使用 SAP Intelligent Robotic Process Automation 自动操作 Excel

Jerry Wang

机器学习 RPA 机器人流程自动化 SAP 7月月更

SAP 实施项目中涉及到编程方式操作 Excel 的几种场景介绍

Jerry Wang

Excel automation SAP abap 7月月更

大数据培训机构怎么选?

小谷哥

JAVA编程规范之注释规约

源字节1号

后端开发

云原生(七) | Docker篇之深入Docker Compose

Lansonli

云原生 7月月更

学习web前端开发有哪些好的方法

小谷哥

大数据入门学习指南

Lansonli

大数据 7月月更 大数据基础 大数据基础知识 大数据核心

巧用RoaringBitMap处理海量数据内存diff问题

得物技术

Java HBase BitMap

MySync——企点通用MySQL数据同步解决方案

腾讯企点技术团队

MySQL 数据库 日志 Binlog 同步

好书推荐|《产业数字化转型精要:方法与实践》

李洋

职业 数字化转型 数字经济 书籍 CIO的秘密武器

Java培训如何选择靠谱

小谷哥

推荐一款支持数据 + 代码生成的开发工具!yyds

了不起的程序猿

Java 程序员 工具

web前端开发技术就业前景怎么样

小谷哥

LP双币质押流动性挖矿dapp系统开发逻辑分析

开发微hkkf5566

2022可信区块链生态大会落幕——旺链科技参与《区块链供应链金融系统评测方法》制定

旺链科技

区块链 产业区块链 供应链金融

性能领域:你知道的越多,不知道的也就越多

博文视点Broadview

DevOps 实践多年,最痛的居然是?

SoFlu软件机器人

怎么选择好的web前端开发培训课程

小谷哥

火爆各平台的拼团功能,宝子们在多商户系统中玩过吗?

CRMEB

JS class 并不只是简单的语法糖!

掘金安东尼

JavaScript 前端 设计模式 7月月更

【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键

小哈区块

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