intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Silverlight - Chapter 9 - Hiệu suất hoạt động trong ứng dụng Silverlight

Chia sẻ: Võ Quang Hòa | Ngày: | Loại File: PDF | Số trang:0

79
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Là một công nghệ mới được phát triển dựa trên mô hình plugin. Tức là bạn phải download và cài đặt nó thì bạn mới xem được những nội dung được phát triển bởi silverlight. Silverlight có khả năng truyển tải dữ liệu, âm thanh, hình ảnh chất lượng cao một cách nhanh chóng.

Chủ đề:
Lưu

Nội dung Text: Silverlight - Chapter 9 - Hiệu suất hoạt động trong ứng dụng Silverlight

  1. Infoway CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT Solutions CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT 1 Làm th nào đ chương trình c a b n ch y nhanh và n đ nh Đ ng d ng c a b n ho t đ ng n đ nh v i hi u su t cao b n c n ph i ch n nh ng phương án kh thi và t i ưu và tránh nh ng sai l m trong vi c l a ch n phương án. Chúng tôi đưa ra m t s g i ý giúp cho m t ng d ng ch y nhanh và hi u qu dư i đây. 1.1 Th nghi m trên nhi u h đi u hành và trình duy t N u b n đang phát tri n Silverlight dành cho các ng d ng d a trên nhi u h đi u hành (ví d : máy Macintosh, Windows) và các trình duy t (ví d : Internet Explorer, Mozilla Firefox, Apple Safari) b n nên thư ng xuyên ki m tra các ng d ng c a b n trên các n n t ng và trình duy t mà b n đang nh m t i. Nh ng s khác nhau trong n n t ng ho c và cách th c ho t đ ng c a trình duy t, và các mã Silverlight l p trình ng d ng có th nh hư ng đ n hi u su t ng d ng. B n nên ki m tra k lư ng khi b n t o các ng d ng có s d ng nhúng các plug-in có s ki m tr ng và minh b ch ngu n g c plug-in. 1.2 Đ t EnableFrameRateCounter cho đúng trong th i gian phát tri n Hi u su t khi render đ i v i các plug-in là khác nhau v i các thông s và d li u ph c t p. Chúng tôi khuyên b n nên đ t EnableFrameCounter trong quá trình phát tri n. Thi t l p này s hi n th các khung hình trên giây (fps: frame per second) c a Silverlight trên thanh tr ng thái trình duy t, do đó b n có th tinh ch nh các ng d ng c a b n đúng v i yêu c u mà b n đ t ra: Fps: currentFramerate / maxFramerate CurrentFramerate là s t l khung hình trên giây hi n hành c a ng d ng d a trên đi u ki n môi trư ng c a plug-in. maxFramerate là s t l khung hình t i đa đư c c u hình thông qua các tham s framerate initialization giá tr maxFramerate là giá tr t i h n, nghĩa là b t c trư ng h p nào ch s th c t currentFramerate cũng s th p hơn maxFramerate. Ví d khi b n vào m t trang HTML trên Silverlight maxFramerate m c đ nh là 24khung hình / giây 1.3 S d ng Transparent Background S d ng Transparent background có th s h u ích v i ví d sau: khi b n mu n hi n th đ ng th i giao thoa gi a các l p đ i tư ng đ h a ch ng l p lên nhau như image, shape. Tuy nhiên tránh vi c l m d ng Transparent background b t c đâu, nó s làm nh hư ng đ n hi u su t ho t đ ng c a ng d ng. 1.4 Tránh vi c s d ng các k ch b n làm bi n đ i kích c font c a Text Thay đ i kích c c a Text s nh hư ng tiêu t n khá nhi u tài nguyên h th ng, b i vì Silverlight s d ng hinting đ làm m n văn b n khi render text. N u b n bi n đ i text size b i transform ho c thu c tính FontSize Silverlight s làm m n l i toàn b text cho m i frame, vi c dó s làm tiêu t n tài nguyên.
  2. Infoway CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT Solutions N u ng d ng c a b n đòi h i ph i thay đ i quy mô văn b n l n, s t t hơn n u s d ng đ h a vector làm đ i di n các văn b n. 1.5 Tránh s d ng ch đ Windowless Ch nên đ t thu c tính Windowless khi c n thi t. Hi u su t s b nh hư ng nghiêm tr ng khi ch đ Windowless. Do v y khuy n cáo các b n không nên s d ng ch đ này. 1.6 S d ng Visibility thay cho vi c s d ng Opacity trong r t nhi u trư ng h p không c n đ n s có m t c a Opacity N u b n đơn gi n ch mu n th c hi n t t hi n th m t đ i tư ng thì hoàn toàn không nên s d ng thu c tính opacity, trong trư ng h p này tôi khuyên b n nên s d ng thu c tính Visibitily. Opacity s d ng chi phí tài nguyên cao hơn b i vì đ i tư ng này v n s d ng các k thu t Rendered. S d ng Visibility đ tránh vi c lãng phí tài nguyên. 1.7 Silverlight s d ng Multi-Core trong Rendering và Media Silverlight mang l i ưu đi m c a Multi-core cho Render đ h a và Media. B i v y các ng d ng Silverlight c a b n s ch y nhanh hơn trên h th ng Multi-core( đa lõi). 1.8 Trong ch đ Full-Screen, n nh ng đ i tư ng không s d ng Khi ng d ng c a b n ch đ Full-Screen, n các đ i tư ng không đư c Render ho c ng t k t n i chúng trong cây. B n có th n m t đ i tư ng b ng tùy ch nh thu c tính Visibility b ng Collapsed. 1.9 Tránh s d ng thu c tính Width và Height đ i v i đ i tư ng MediaElement Tránh vi c thi t l p Width và Height c a m t đ i tư ng MediaElement. Thay vào đó cho phép các MediaElement hi n th kích c t nhiên. N u b n c n thay đ i kích c màn hình hi n th c a các Element, cách t t nh t là mã hóa l i file Media v i kích c mong mu n b ng các công c khác. 1.10 Tránh s d ng thu c tính Width và Height đ i v i đ i tư ng Path Tránh thi t l p thu c tính Width, Height cho đ i tư ng Path. Thi t l p các thu c tính s b sung stretching t đ ng n i r ng ph m vi nh hư ng đ n hi u su t. Thay vào đó căn c vào các t a đ rõ ràng c a các đ i tư ng Path đi u khi n hình d ng và v trí c a nó, khi đó Width và Height s t đ ng đư c set. 1.11 Nguy cơ đ v khi CPU s ly cư ng đ l n công vi c Khi đang th c thi các mã code (C# hay VisualBasic) các plug-in ng ng v . Thông thư ng đi u này không ph i là v n đ khi ta th c hi n nh ng công vi c t i thi u mà d dàng ki m soát đư c. Tuy nhiên n u ng d ng có quy mô tương đ i và có s d ng l p trình thread, chúng tôi khuyên b n nên chia nh công vi c và các tác v . Đi u này s cho phép ng d ng Render theo k p v i t l Frame mong mu n. 2
  3. Infoway CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT Solutions 1.12 Nguy cơ đ v đ i v i ng d ng có nh ng Package l n Trong m t s trư ng h p Silverlight plug-in không ph i là thành công khi ch y các ng d ng có t p tin (.Xap) l n, b n c n cân nh c t p chung m t s ngu n l c, t p h p thư vi n vào modul riêng bi t và ch t i v theo yêu c u nh m t i ưu hóa h th ng và ngu n l c. 1.13 S d ng Double.ToString(CultureInfo.InvariantCulture) hi u qu hơn Double.ToString() Phương th c Double.ToString(IFormatProvider) cung c p giá tr CultureInfo.InvariantCulture t i ưu hóa hi u su t. T ng quan thì phương th c Double.ToString(CultureInfo.InvariantCulture) th c thi t t nh t khi b n không mu n hi n th d li u t i ngư i dung ho c dùng cho vi c so sánh String. N u ng d ng c a b n hi n th các s t i ngư i dùng và b n mu n hi n th chúng chính xác, b n nên s d ng phương th c Double.ToString(IFormatProvider) v i giá tr CultureInfo.CurrentCulture. V i nh ng y u t h u ích trên b n nên th c hi n vi c chuy n đ i. 2 S d ng BackGroundWorker 2.1 B t đ u v i vi c t o m t BackGroundWorker C# BackgroundWorker bw = new BackgroundWorker(); // Xác các thu c tính đ h th ng background cho phép h y b và báo cáo ti n trình bw.WorkerSupportsCancellation = true; bw.WorkerReportsProgress = true; 2.2 T o m t Event handler cho background worker b i DoWork event DoWork event handler là nơi mà b n ch y h th ng trên n n thread. B t kỳ m t thay đ i nào c a h th ng n n thông qua đ i s c a DoWorkEventArgs đ i tư ng đó s đư c thông qua v i s ki n handler. Đ thông báo ti n trình quay tr l i g i t i hàm ReportProgress và thông qua nó hoàn thành m t giá tr t 0 đ n 100. ReportProgress gây lên m t s ki n ProgressChanged mà b n có th x lý riêng bi t. Chú ý: n u báo cáo ti n trình WorkerReportsProgress c a BackGroundWorker không đư c đ t là True mà b n g i th t c ReportProgress, m t ngo i l s x y ra. Đ xác đ nh xem có m t yêu c u nào đó đang ch th c thi yêu c u h y b background ng m, hãy ki m tra thu c tính CancellationPending c a BackgroundWorker. N u thu c tính đó tr v là True thì th t c CancelAsync đã đư c g i. Đ i tư ng BackGroundWorker đư c h y b và h th ng s d ng l i. Đ chuy n d li u quay tr l i quá trình x lý, thi t l p thu c tính cho DoWorkEventArgs c a đ i tư ng đư c thông qua v i s ki n handler. Giá tr này có th đư c đ c khi mà RunWorkerCompleted s ki n đư c gây ra khi k t thúc h th ng. C# 3
  4. Infoway CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT Solutions private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; (i
  5. Infoway CHƯƠNG IX: HI U SU T HO T Đ NG TRONG NG D NG SILVERLIGHT Solutions } else { this.tbProgress.Text = "Done!"; } } 2.5 B xung s ki n vào BackGroundWorker Ví d sau đây cho th y làm th nào đ b xung thêm s ki n vào DoWork, ProgressChanged, và các s ki n RunWorkerCompleted. bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkedCompletedEventHandler(bw_RunWorkerCompleted); 2.6 B t đ u ch y background g i b i th t c RunWorkerAsync. private void buttonStart_Click(object sender, RoutedEventArgs e) { if (bw.IsBusy != true) { bw.RunWorkerAsync(); } } 2.7 H y b ho t đ ng c a background g i b i th t c CancelAsync. private void buttonCancel_Click(object sender, RoutedEventArgs e) { if (bw.WorkerSupportsCancellation == true) { bw.CancelAsync(); } } 5
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2