You are on page 1of 5

Infoway

Solutions
CHNG IX: HIU SUT HOT NG TRONG NG DNG SILVERLIGHT


CHNG IX:
HIU SUT HOT NG TRONG NG DNG
SILVERLIGHT
1 Lm th no chng trnh ca bn chy nhanh v n nh
ng dng ca bn hot ng n nh vi hiu sut cao bn cn phi chn nhng phng
n kh thi v ti u v trnh nhng sai lm trong vic la chn phng n. Chng ti a ra
mt s gi gip cho mt ng dng chy nhanh v hiu qu di y.
1.1 Th nghim trn nhiu h iu hnh v trnh duyt
Nu bn ang pht trin Silverlight dnh cho cc ng dng da trn nhiu h iu hnh (v
d: my Macintosh, Windows) v cc trnh duyt (v d: Internet Explorer, Mozilla Firefox,
Apple Safari) bn nn thng xuyn kim tra cc ng dng ca bn trn cc nn tng v
trnh duyt m bn ang nhm ti. Nhng s khc nhau trong nn tng hoc v cch thc
hot ng ca trnh duyt, v cc m Silverlight lp trnh ng dng c th nh hng n
hiu sut ng dng. Bn nn kim tra k lng khi bn to cc ng dng c s dng nhng
cc plug-in c s kim trng v minh bch ngun gc plug-in.
1.2 t EnableFrameRateCounter cho ng trong thi gian pht trin
Hiu sut khi render i vi cc plug-in l khc nhau vi cc thng s v d liu phc tp.
Chng ti khuyn bn nn t EnableFrameCounter trong qu trnh pht trin. Thit lp ny
s hin th cc khung hnh trn giy (fps: frame per second) ca Silverlight trn thanh trng
thi trnh duyt, do bn c th tinh chnh cc ng dng ca bn ng vi yu cu m bn
t ra:
Fps: currentFramerate / maxFramerate
CurrentFramerate l s t l khung hnh trn giy hin hnh ca ng dng da trn iu kin
mi trng ca plug-in. maxFramerate l s t l khung hnh ti a c cu hnh thng qua
cc tham s framerate initialization gi tr maxFramerate l gi tr ti hn, ngha l bt c
trng hp no ch s thc t currentFramerate cng s thp hn maxFramerate.
V d khi bn vo mt trang HTML trn Silverlight maxFramerate mc nh l 24khung hnh /
giy
1.3 S dng Transparent Background
S dng Transparent background c th s hu ch vi v d sau: khi bn mun hin th ng
thi giao thoa gia cc lp i tng ha chng lp ln nhau nh image, shape.
Tuy nhin trnh vic lm dng Transparent background bt c u, n s lm nh hng
n hiu sut hot ng ca ng dng.

1.4 Trnh vic s dng cc kch bn lm bin i kch c font ca Text
Thay i kch c ca Text s nh hng tiu tn kh nhiu ti nguyn h thng, bi v
Silverlight s dng hinting lm mn vn bn khi render text. Nu bn bin i text size bi
transform hoc thuc tnh FontSize Silverlight s lm mn li ton b text cho mi frame, vic
d s lm tiu tn ti nguyn.
Smith Nguyen Studio.
https:/ / www.facebook.com/ SmithNguyenStudio
Infoway
Solutions
CHNG IX: HIU SUT HOT NG TRONG NG DNG SILVERLIGHT


2
Nu ng dng ca bn i hi phi thay i quy m vn bn ln, s tt hn nu s dng
ha vector lm i din cc vn bn.
1.5 Trnh s dng ch Windowless
Ch nn t thuc tnh Windowless khi cn thit. Hiu sut s b nh hng nghim trng khi
ch Windowless. Do vy khuyn co cc bn khng nn s dng ch ny.
1.6 S dng Visibility thay cho vic s dng Opacity trong rt nhiu trng hp
khng cn n s c mt ca Opacity
Nu bn n gin ch mun thc hin tt hin th mt i tng th hon ton khng nn s
dng thuc tnh opacity, trong trng hp ny ti khuyn bn nn s dng thuc tnh Visibitily.
Opacity s dng chi ph ti nguyn cao hn bi v i tng ny vn s dng cc k thut
Rendered. S dng Visibility trnh vic lng ph ti nguyn.
1.7 Silverlight s dng Multi-Core trong Rendering v Media
Silverlight mang li u im ca Multi-core cho Render ha v Media. Bi vy cc ng
dng Silverlight ca bn s chy nhanh hn trn h thng Multi-core( a li).
1.8 Trong ch Full-Screen, n nhng i tng khng s dng
Khi ng dng ca bn ch Full-Screen, n cc i tng khng c Render hoc ngt
kt ni chng trong cy. Bn c th n mt i tng bng ty chnh thuc tnh Visibility bng
Collapsed.
1.9 Trnh s dng thuc tnh Width v Height i vi i tng MediaElement
Trnh vic thit lp Width v Height ca mt i tng MediaElement. Thay vo cho php
cc MediaElement hin th kch c t nhin. Nu bn cn thay i kch c mn hnh hin th
ca cc Element, cch tt nht l m ha li file Media vi kch c mong mun bng cc cng
c khc.
1.10 Trnh s dng thuc tnh Width v Height i vi i tng Path
Trnh thit lp thuc tnh Width, Height cho i tng Path. Thit lp cc thuc tnh s b
sung stretching t ng ni rng phm vi nh hng n hiu sut. Thay vo cn c vo
cc ta r rng ca cc i tng Path iu khin hnh dng v v tr ca n, khi Width
v Height s t ng c set.
1.11 Nguy c v khi CPU s ly cng ln cng vic
Khi ang thc thi cc m code (C# hay VisualBasic) cc plug-in ngng v. Thng thng iu
ny khng phi l vn khi ta thc hin nhng cng vic ti thiu m d dng kim sot
c. Tuy nhin nu ng dng c quy m tng i v c s dng lp trnh thread, chng ti
khuyn bn nn chia nh cng vic v cc tc v. iu ny s cho php ng dng Render
theo kp vi t l Frame mong mun.
Smith Nguyen Studio.
https:/ / www.facebook.com/ SmithNguyenStudio
Infoway
Solutions
CHNG IX: HIU SUT HOT NG TRONG NG DNG SILVERLIGHT


3
1.12 Nguy c v i vi ng dng c nhng Package ln
Trong mt s trng hp Silverlight plug-in khng phi l thnh cng khi chy cc ng dng
c tp tin (.Xap) ln, bn cn cn nhc tp chung mt s ngun lc, tp hp th vin vo
modul ring bit v ch ti v theo yu cu nhm ti u ha h thng v ngun lc.

1.13 S dng Double.ToString(CultureInfo.InvariantCulture) hiu qu hn
Double.ToString()
Phng thc Double.ToString(IFormatProvider) cung cp gi tr CultureInfo.InvariantCulture
ti u ha hiu sut. Tng quan th phng thc
Double.ToString(CultureInfo.InvariantCulture) thc thi tt nht khi bn khng mun hin th d
liu ti ngi dung hoc dng cho vic so snh String.
Nu ng dng ca bn hin th cc s ti ngi dng v bn mun hin th chng chnh xc,
bn nn s dng phng thc Double.ToString(IFormatProvider) vi gi tr
CultureInfo.CurrentCulture. Vi nhng yu t hu ch trn bn nn thc hin vic chuyn i.

2 S dng BackGroundWorker

2.1 Bt u vi vic to mt BackGroundWorker
C#
BackgroundWorker bw = new BackgroundWorker();
// Xc cc thuc tnh h thng background cho php hy b v bo co tin trnh
bw.WorkerSupportsCancellation = true;
bw.WorkerReportsProgress = true;
2.2 To mt Event handler cho background worker bi DoWork event
DoWork event handler l ni m bn chy h thng trn nn thread. Bt k mt thay i no
ca h thng nn thng qua i s ca DoWorkEventArgs i tng s c thng qua
vi s kin handler.
thng bo tin trnh quay tr li gi ti hm ReportProgress v thng qua n hon thnh
mt gi tr t 0 n 100. ReportProgress gy ln mt s kin ProgressChanged m bn c
th x l ring bit.
Ch : nu bo co tin trnh WorkerReportsProgress ca BackGroundWorker khng c
t l True m bn gi th tc ReportProgress, mt ngoi l s xy ra.
xc nh xem c mt yu cu no ang ch thc thi yu cu hy b background ngm,
hy kim tra thuc tnh CancellationPending ca BackgroundWorker. Nu thuc tnh tr v
l True th th tc CancelAsync c gi. i tng BackGroundWorker c hy b v
h thng s dng li.
chuyn d liu quay tr li qu trnh x l, thit lp thuc tnh cho DoWorkEventArgs ca
i tng c thng qua vi s kin handler. Gi tr ny c th c c khi m
RunWorkerCompleted s kin c gy ra khi kt thc h thng.
C#
Smith Nguyen Studio.
https:/ / www.facebook.com/ SmithNguyenStudio
Infoway
Solutions
CHNG IX: HIU SUT HOT NG TRONG NG DNG SILVERLIGHT


4
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;

for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}
2.3 To mt event handler cho s kin ProgressChanged ca backgroundworker
Trong s kin ProgressChanged thm m x l tin trnh chng hn nh cp nht giao din
ngi dng.
xc nh bao nhiu t l phn trm cc hot ng c hon thnh, hy kim tra thuc tnh
ProgressPercentage thng qua s kin ProgressChangedEventArgs.
C#
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.tbProgress.Text = (e.ProgressPercentage.ToString() + "%");
}
2.4 To mt s kin cho RunWorkerCompleted
S kin RunWorkerCompleted c gy ra khi tin trnh backgroundworker hon thnh. Ty
thuc vo vic tin trnh background s a ra cc trng thi nh hon thnh , li, hy m
update giao din ngi dng cho ph hp.
xc nh mt li xy ra, hy kim tra cc li t RunWorkerCompletedEventArgs thng qua
s kin. Nu mt li xy ra thuc tnh ny s bao gm nhng thng tin v trng hp ngoi
l.
Nu h thng hot ng khng cho php hy b v bn mun kim tra xem cc hot ng
ca h thng c hy b hay khng s kin c thng qua
RunWorkerCompletedEventArgs. Nu l True th th tc CancelAsync c gi.

C#
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
this.tbProgress.Text = "Canceled!";
}

else if (!(e.Error == null))
{
this.tbProgress.Text = ("Error: " + e.Error.Message);
Smith Nguyen Studio.
https:/ / www.facebook.com/ SmithNguyenStudio
Infoway
Solutions
CHNG IX: HIU SUT HOT NG TRONG NG DNG SILVERLIGHT


5
}

else
{
this.tbProgress.Text = "Done!";
}
}





2.5 B xung s kin vo BackGroundWorker
V d sau y cho thy lm th no b xung thm s kin vo DoWork, ProgressChanged,
v cc s kin RunWorkerCompleted.
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkedCompletedEventHandler(bw_RunWorkerCompleted);

2.6 Bt u chy background gi bi th tc RunWorkerAsync.
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
2.7 Hy b hot ng ca background gi bi th tc CancelAsync.
private void buttonCancel_Click(object sender, RoutedEventArgs e)
{
if (bw.WorkerSupportsCancellation == true)
{
bw.CancelAsync();
}
}
Smith Nguyen Studio.
https:/ / www.facebook.com/ SmithNguyenStudio

You might also like