Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A felhasználók azt várják, hogy alkalmazásaik válaszkészek maradnak, természetesnek érezzék magukat, és ne ürítsék le az akkumulátorukat. Technikailag a teljesítmény nem funkcionális követelmény, de a teljesítmény funkcióként való kezelése segít a felhasználók elvárásainak teljesítésében. Határozza meg a célokat és az eredmények mérését – ezek kulcsfontosságú tényezők. Határozza meg a teljesítmény szempontjából kritikus forgatókönyveket, határozza meg, mit jelent a jó teljesítmény, majd mérje meg a projekt életciklusa során, hogy biztos legyen abban, hogy eléri a céljait.
Célok megadása
A felhasználói élmény alapvető módja a jó teljesítmény meghatározásának. Az alkalmazások indítási ideje befolyásolhatja a felhasználó teljesítményét. A felhasználó úgy ítélheti meg, hogy egy alkalmazás egy másodpercnél rövidebb indítási ideje kiváló, öt másodpercnél rövidebb indítási ideje jó, míg az öt másodpercnél hosszabb indítási ideje gyenge.
Más metrikák kevésbé nyilvánvaló hatással vannak a felhasználói élményre, például a memóriára. Annak az esélye, hogy egy alkalmazás felfüggesztve vagy inaktív állapotban leáll, az aktív alkalmazás által használt memória mennyiségével nő. A magas memóriahasználat rontja a rendszer összes alkalmazásának élményét, ezért ésszerű a memóriahasználati cél elérése.
Konkrét és mérhető kezdeti célokat állíthat be. Három kategóriába kell tartozniuk:
- Idő – mennyi ideig tart a felhasználók vagy az alkalmazás a feladatok elvégzéséhez
- Fluiditás – az a sebesség és folytonosság, amellyel az alkalmazás újrarajzolva magát a felhasználói interakciókra válaszul
- Hatékonyság – az alkalmazás mennyire óvja meg a rendszer erőforrásait, beleértve az akkumulátort is
Idő
Gondolja át, hogy a felhasználók számára elfogadható időtartományokat (interakciós osztályokat) kell használniuk a feladataik elvégzéséhez.
| Interakciós osztály | Felhasználói észlelés | Ideal | Maximum | Examples |
|---|---|---|---|---|
| Gyors | Minimálisan észrevehető késleltetés | 100 ms | 200 ms | Nyissa meg az alkalmazássávot; nyomja le a gombot (első válasz) |
| Szokásos | Gyors, de nem gyors | 300 ms | 500 ms | Átméretezés; szemantikus nagyítás |
| Reszponzív | Nem gyors, de rugalmasnak érzi magát | 500 ms | 1 másodperc | Lépjen egy másik oldalra; folytassa az alkalmazás használatát |
| Launch | Versenyélmény | 1 másodperc | 3 másodperc | Az alkalmazás első indítása |
| Folyamatos | Már nem érzi magát rugalmasnak | 500 ms | 5 másodperc | Fájl letöltése az internetről |
| Kötött | Hosszú; a felhasználó elnavigálhat | 500 ms | 10 másodperc | Több alkalmazás telepítése az Áruházból |
Rendeljen interakciós osztályokat az alkalmazás teljesítményforgatókönyveihez. Minden forgatókönyv esetében rendelje hozzá az alkalmazás időponthoz kötött hivatkozását, a felhasználói élmény egy részét és egy interakciós osztályt.
Fluiditás
Az alkalmazás konkrét mérhető fluiditási céljai a következők lehetnek:
- Nincs képernyő-újrarajzlás leállítása és indítása (glitches)
- Az animációk másodpercenként 60 képkockát renderelnek (FPS)
- Amikor egy felhasználó pásztázunk vagy görgetünk, az alkalmazás másodpercenként 3–6 oldalnyi tartalmat jelenít meg
Efficiency
Az alkalmazás konkrét mérhető hatékonysági céljai a következők lehetnek:
- Az alkalmazás cpu-százalékos értéke a célértéknél vagy az alatt van, és a memóriahasználat MB-ban mindig a célnál vagy az alatt van
- Ha az alkalmazás inaktív, a processzor- és memóriahasználat minimális
- Az alkalmazás akkumulátorról egy megadott számú órán keresztül aktívan használható.
Tervezze meg alkalmazását a teljesítmény szem előtt tartásával
A teljesítménycélok segítségével befolyásolhatja az alkalmazás kialakítását. Vegye figyelembe az alábbi szempontokat:
Felhasználói felület
- Az XAML-korrektúra optimalizálásával maximalizálhatja az egyes lapok elemzési és betöltési idejét és memóriahatékonyságát. Halasztja a felhasználói felület és a kód betöltését, amíg szükség nem lesz rá.
- A(z)
ListViewésGridViewesetében tegye az összes elemet azonos méretűvé, és használjon a lehető legtöbb optimalizálási technikát. - A felhasználói felületet jelölőnyelven deklarálja ahelyett, hogy kódban hozná létre.
- Késleltetheti a felhasználói felület elemeinek létrehozását, amíg a felhasználónak szüksége nem lesz rájuk az x:Load attribútum használatával.
- Részesítse előnyben a témaátmeneteket és animációkat a forgatókönyvezett animációkkal szemben. A storyboard-alapú animációk a képernyő folyamatos frissítését igénylik, és aktívan tartják a CPU-t és a grafikus feldolgozási láncot.
- Töltse be a képeket a megjelenített nézetnek megfelelő méretben.
PROCESSZOR, memória és teljesítmény
- Ütemezze az alacsonyabb prioritású munkát az alacsonyabb prioritású szálakra. Lásd az aszinkron programozást és a DispatcherQueue osztályt.
- Ha nincs rájuk szükség, csökkentse az alkalmazás memóriaigényét, ha drága erőforrásokat (például adathordozókat) bocsát ki.
- Amikor csak lehetséges, kerülje el a memóriaszivárgást az eseménykezelők regisztrációjának megszüntetésével és a felhasználói felület elemeire mutató hivatkozások törlésével.
- Az akkumulátor hatékonysága érdekében legyen óvatos azzal, hogy milyen gyakran kérdez le adatokat, kérdez le egy érzékelőt, vagy ütemezze a processzor működését tétlen állapotban.
Adathozzáférés
- Ha lehetséges, töltse be előre a tartalmat.
- Gyorsítótárazzon olyan tartalmakat, amelyek elérése költséges.
- Gyorsítótárhibák esetén a lehető leggyorsabban jelenítsen meg egy helyőrző felhasználói felületet, amely azt jelzi, hogy az alkalmazás továbbra is betölti a tartalmat.
Eszköz a teljesítményhez
Kódként adjon hozzá olyan kódot, amely az alkalmazás futtatása közben naplózza az üzeneteket és eseményeket bizonyos pontokon. Később használjon profilkészítési eszközöket, például Windows Teljesítményrögzítőt és Windows Teljesítményelemző (mindkettő szerepel a Windows Performance Toolkit) az alkalmazás teljesítményéről szóló jelentés létrehozásához és megtekintéséhez.
Windows az Event Tracing által támogatott naplózási API-kat biztosít Windows (ETW) számára, amelyek gazdag eseménynaplózási és nyomkövetési megoldást kínálnak. A Windows.Foundation.Diagnostics névtérben találhatók a FileLoggingSession, LoggingActivity, LoggingChannel és LoggingSession osztályok.
// using Windows.Foundation.Diagnostics;
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
myLoggingChannel.LogMessage("Here's my logged message.", LoggingLevel.Information);
Események naplózása és leállítása egy adott időszakban:
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
LoggingActivity myLoggingActivity;
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity", myLoggingChannel))
{
// A start event is logged when the activity begins.
// Add code here to do something of interest.
}
// An end event is logged when the activity ends.
Teljesítménycélok tesztelése és mérése
Ezekkel a technikákkal és eszközökkel tesztelheti, hogy az alkalmazás hogyan veri össze a teljesítménycélokat:
- Tesztelje a hardverkonfigurációk széles skáláját, beleértve az asztali számítógépeket, laptopokat, ultrabookokat és táblagépeket.
- Tesztelje a képernyőméretek széles skáláját. A szélesebb képernyők több tartalmat mutatnak, ami negatív hatással lehet a teljesítményre.
- Szüntesse meg a lehető legtöbb tesztelési változót:
- Kapcsolja ki a háttéralkalmazásokat a teszteszközön.
- Az alkalmazást a kiadási konfigurációban hozhatja létre, mielőtt üzembe helyezené a tesztelési eszközön.
- Az alkalmazás többszöri futtatásával kiküszöbölheti a véletlenszerű tesztelési változókat, és konzisztens méréseket biztosíthat.
- Tesztelje a csökkentett energia rendelkezésre állást. Előfordulhat, hogy a felhasználói eszközök teljesítménye jelentősen kisebb, mint a fejlesztői gépé.
- Az alkalmazások teljesítményének méréséhez használjon olyan eszközök kombinációját, mint Visual Studio diagnosztikai eszközök és Windows Teljesítményelemző.
Válasz a teljesítményteszt eredményeire
A teljesítményteszt eredményeinek elemzése után állapítsa meg, hogy szükség van-e módosításokra:
- Módosítania kell az alkalmazástervezési döntéseket, vagy optimalizálnia kell a kódot?
- Szükséges hozzáadni, eltávolítani vagy módosítani a kódban lévő műszerezést?
- Felül kell vizsgálnia a saját teljesítménycéljait?
Ha módosításokra van szükség, végezze el ezeket, majd térjen vissza az instrumentáláshoz vagy a teszteléshez.
Optimize
Csak az alkalmazásod teljesítménye szempontjából kritikus kódrészeit optimalizáld – vagyis azokat, amelyek a legtöbb futási időt veszik igénybe. A profilkészítés megmutatja, hogy ezek mely területek. Gyakran kompromisszumot kell kötni a jó tervezési gyakorlatok és a legmagasabb szintre optimalizált kód között. Rangsorolja a fejlesztői hatékonyságot és a jó szoftvertervezést azokon a területeken, ahol a teljesítmény nem jelent problémát.
Kapcsolódó tartalom
Windows developer