天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Silverlight性能優(yōu)化紀要

  Silverlight作為微軟為富網(wǎng)絡(luò)應(yīng)用所做的一個全新的架構(gòu),其優(yōu)秀的表現(xiàn)力讓開發(fā)者和用戶感受到了強烈的沖擊,無數(shù)的開發(fā)者為其著迷,同時微軟的廣大設(shè)計者也在不斷地為其完善和充實,同時Silverlight團隊也積極的構(gòu)建Silverlight 5,其初步的版本已在 http://channel9.msdn.com/Series/Silverlight-Firestarter做了演示,從中你可以感受到Silverlight未來之路。我在學(xué)習(xí)了里面的性能優(yōu)化的Event后,對這部分的介紹做了一個摘要,希望給大家簡單的了解。

  性能優(yōu)化是一個逐步迭代的過程,在此過程中你需要做到以下的工作:

  1、明確哪些關(guān)鍵的步驟對性能優(yōu)影響;

  2、制定清晰地目標;

  3、經(jīng)常并盡早的進行性能測試;

  4、對新加入的新特性進行監(jiān)視;

  5、在最終的部署環(huán)節(jié)進行測試。

  一、 Sivlerlight 啟動時的優(yōu)化

  減少XAP包的下載量;盡量去除不必要的XAML標記以減少解析時間;使用延遲加載的方式來減少和磁盤IO的交互以及使用歡迎頁面來提高加載時的用戶體驗。

1  在這兒Jossef Goldberg還提供了動態(tài)下載XAP包的關(guān)鍵代碼范例[DataGrid控件的優(yōu)化]:

  由于DataGrid控件庫沒有在提供在Silverlight核心庫中,所以在我們的程序中如果使用該控件,則加載相應(yīng)的大約144KB的SDK控件庫,因此如果你的應(yīng)用程序并沒有在程序一開始就使用到DataGrid控件,那么我們就可以使用延遲下載和動態(tài)加載的方式。

  具體的步驟和代碼如圖: 2  二、運行時的優(yōu)化性能

  1、減少頁面重繪;

  a:減少頁面的更新  

  Silverlight僅在頁面為“臟”的部位進行重繪,因此我們可以減少使用大篇幅的動畫;關(guān)閉頁面中隱藏的動畫及注意控件的默認動畫行為。

  b:直接更新頁面

  這可以通過設(shè)置Silverlight對象的兩個頁面參數(shù)來實現(xiàn),即enableRedrawRegions 和enableFrameRateCounter :

  相應(yīng)的設(shè)置如下:

       <param name="enableRedrawRegions" value="true" />

       <param name="enableFrameRateCounter" value="true"/>

  2、小心使用Effects;

  由于使用酷效果可以增強程序的表現(xiàn)力,所以很多的設(shè)計人員喜歡使用它,不過使用Effects會給我們的應(yīng)用程序帶來性能問題,因為Effects是CPU計算來呈現(xiàn),不能獲得GPU的運算處理的好處,所以要盡量少用。如果使用Effects還得注意不要對Effects的屬性進行動畫修改,或者將其用到動畫部件上,同時將Effects應(yīng)用到子節(jié)點上。

  3、使用GPU加速;

  由于Silverlight可以使用位圖緩存,緩存的位圖使用于GPU內(nèi)存,所以位圖緩存可以通過GPU加速。下列元素可以使用GPU加速:Render Transforms(變換);Opacity(透明度);Rectangular Clip(矩形剪切);Projects(透視).其他如Effects(效果)、Opacity Mask(透明掩碼)、Non-rectangular Clips(非矩形剪切)只能依靠CPU呈現(xiàn)。

  使用GPU加速的步驟有

  1)、在插件級設(shè)置為允許GPU加速

  <param name=“EnableGPUAcceleration” value="true"/>

  2)、在元素級設(shè)置允許位圖緩存

  <StackPanel CacheMode="BitmapCache“ … >

  3)、優(yōu)化操作:控制緩存位圖的尺度或者數(shù)量(數(shù)量等同于內(nèi)存,特別使用于縮放的場景)

  <BitmapCache RenderAtScale=“2" .../>

  那么什么時候使用BitmapCache呢,一般來說呈現(xiàn)元素多的昂貴操作如:GPU能對他們的屬性進行動畫以及用戶可以明顯感覺到性能影響的情況下可以考慮使用它。對于大幅面的視覺元素不要使用BitmapCache,因為GPU緩存不夠用時會使用軟件來模擬,那樣反而適得其反;如果子元素也有動畫師也不要使用BitmapCache,因為使用緩存時會把所有的子元素本身也加入到緩存中。

  4、簡化XMAL標記(減少視覺樹的復(fù)雜度);

  1)、可視樹越小就越快:屬性、排列、綁定、輸入、樣式都會加大開銷,同時小樹讓事件的路由更快,內(nèi)存使用更少,程序設(shè)計中也容易計量元素的數(shù)量。

  2)、警惕模板擴張:設(shè)計器的模板可能是你的視覺樹爆炸性的增長。由于用戶控件會試圖解析每一個實例,這使得開銷加大,這是我們應(yīng)該使用模板而不是用戶控件。

  3)、無用的子樹的處理:移除長時間不用的子數(shù),將Visibility=“Collapsed”替代Opacity=“0” ,因為前者不會分配實例。

  5、避免UI線程阻塞;

  Silverlight共享瀏覽器的UI線程,包括:動畫、排列、事件、用戶輸入、App代碼,而幀柵格化、媒體解碼、GPU工作都不使用UI線程。而且只有UI線程能進入到XAML對象中。

  對于耗時的操作都可能影響到你的動畫、輸入、排列等頁面呈現(xiàn),這是我們可以采用以下的兩種方式來避免這些耗時的操作阻塞你的UI呈現(xiàn): 

  1)、把這些長任務(wù)它放入到獨立的代碼塊中,然后使用Dispatcher.BeginInvoke() 進行異步調(diào)用;

  2)、也可以使用BackgroundWorker多線程處理機制,因為它擁有內(nèi)建的報告進度和取消操作的功能。

NET技術(shù)Silverlight性能優(yōu)化紀要,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品国产在线手机在线 | 亚洲国产日韩欧美视频二区 | 麻豆精品乱码WWW久久密 | 精品爽爽久久久久久蜜臀 | 久草免费视频在线观看 | 超碰在线线公开免费视频 | 天天操天天干天天爽 | 特黄特黄aaaa级毛片免费看 | 欧美大片免费观看 | 翁公与小莹在客厅激情 | 最近免费视频中文2019完整版 | 四库影院永久国产精品 | 人妻互换免费中文字幕 | 男人J桶女人P视频无遮挡网站 | 天堂Av亚洲欧美日韩国产综合 | 么公在浴室了我的奶 | 5g在线视讯年龄确认海外禁止进入 | 国语自产精品一区在线视频观看 | 99热这里只有精品6 99热这里只有精品 99热这里只有的精品 | 失禁 调教 刺激 哭喊男男 | 亚洲日韩成人 | 桃隐社区最新最快地址 | 91福利在线观看 | 97色伦亚洲自偷 | 可以看的黄页的网站 | 久久视热频这里只精品 | 亚洲精品蜜夜内射 | 51精品国产AV无码久久久密桃 | 亚洲日本欧美日韩高观看 | 日本高清无卡码一区二区久久 | 午夜福利视频极品国产83 | beeg日本老师按摩 | 豆奶视频在线高清观看 | 99青草青草久热精品视频 | 麻豆第一区MV免费观看网站 | 俄罗斯XXXXXL18| 久久亚洲这里只有精品18 | 艳鉧动漫1~6全集观看在线 | 人成片在线观看亚洲无遮拦 | 东北女人奶大毛多水多 | 99视频这里只有精品国产 |