Menu / szukaj

Przyspieszenie startu aplikacji na WP7

Wśród wymagań certyfikacyjnych można znaleźć kilka dotyczących wydajności uruchamiającej się aplikacji. Dwa najważniejsze to:

  • aplikacja powinna wyświetlić pierwszy ekran w czasie nie dłuższym niż 5 sekund. Ekranem tym może być splash screen,
  • nie później niż 20 sekund po uruchomieniu, aplikacja powinna reagować na działania użytkownika.

Można się zastanawiać, czy to jest dużo. Moim zdaniem bardzo trudno jest przekroczyć te dwa ograniczenia. Z drugiej jednak strony, patrząc na aplikację z punktu widzenia użytkownika, czekanie 20 sekund na uruchomienie się aplikacji jest strasznie irytujące. Należy pamiętać, że po kolejnych 10 sekundach może uruchomić się wygaszacz ekranu na telefonie. Z tego powodu proponuję zastanowić się nad możliwościami przyśpieszenia startu aplikacji.

Zakładam, że takie rzeczy jak:

  • uruchamianie długich operacji w innym wątku niż wątek UI,
  • powiadamianie użytkownika o statusie operacji trwających dłużej

są oczywiste i nie wymagają wytłumaczenia.

Czytaj dalej

Lock-free thread synchronization wg Richtera

15 sierpnia 2012 odbędzie się darmowy webcast prowadzony przez Jeffreya Richteram. W trakcie prezentacji o tytule „Lock-Free Thread Synchronization” Jeffrey Richter będzie demonstrował kwestie związane ze współdzieleniem danych pomiędzy wątkami. Aby móc uczestniczyć w prezentacji należy wcześniej zarejestrować się na stronie organizatora. Tam też można znaleźć dodatkowe informacje dotyczące tego wydarzenia.

StringFormat, XAML i Windows Phone

Codzienne praca z platformą Windows Phone przynosi bardzo wiele niemiłych niespodzianek. Bardzo często można spotkać się z sytuacją, że wiele rzeczy jest przemilczanych w dokumentacji i programista musi sam odkrywać jak coś działa.

Aktualizacja Mango dla Windows Phone wprowadziła nową wersję Silverlight na platformę. Ulepszenie to dodało możliwość wykorzystania StringFormat w dowiązaniach danych w pliku XAML. Użycie tej dodatkowej opcji jest bardzo proste:

<TextBox Text="{Binding Path=Value, StringFormat=Currency: {0:c}}"/>

Po wykonaniu tej linijki powinniśmy zobaczyć liczbę sformatowaną jako waluta. Wynik jaki można zaobserwować po uruchomieniu tego kodu nie do końca odpowiada temu czego się spodziewaliśmy. Owszem nasza liczba sformatowana jest jako waluta, ale nazwa waluty i format liczby jest niewrażliwy na zmianę ustawień regionalnych systemu. Czytaj dalej

Parallel.For – wielowątkowość nigdy nie była tak łatwa

W ostatniej wersji C# pojawiła się możliwość zrównoleglenia obliczeń w bardzo prosty sposób. Pętlę:

for (int n = 0; n <  8; n++)
{
   Console.WriteLine("Normal - iteracja {0} wątek {1}", n,
     Thread.CurrentThread.ManagedThreadId);
}&#91;/code&#93;
<p style="text-align: justify;">można zastąpić następującą konstrukcją:
Parallel.For(0, 8, i =>
{
   Console.WriteLine("Parallel - iteracja {0} wątek {1}", i,
      Thread.CurrentThread.ManagedThreadId);
});

Czytaj dalej