Windows Phone – Teste de Performance

Participando de um projeto de Windows Phone surgiu a necessidade de testar a performance do aparelho, e da plataforma em si. Este teste tinha como base a pergunta: "O quão rápido é o aparelho ao carregar uma quantidade X de elementos em um listbox?"

Essa dúvida surgiu devido a característica do aplicativo de armazenar registros diariamente, e na qual o usuário poderia listar uma quantidade bastante grande de registros na interface visual. Diante deste cenário muitas dúvidas surgiram: "Quanto tempo leva para carregar o controle?", "Qual a quantidade ideal de registros a serem carregados?", "Como o silverlight vai se comportar ao carregar uma quantidade grande de itens?", "O layout esta complexo o suficiente para fazer o aplicativo ficar lento?" "Quanto esses dados em memória podem deixar o device lento?"

Essas dúvidas poderiam apenas ser respondidas com um experimento, e este trabalhou coube a mim. Diante disso construí um teste de carga bastante simples, cujo funcionamento era: Criar muitos registros na base do SQL CE e listar uma quantidade bastante grande de registros de uma única vez.

Então, criei três funções básicas no aplicativo, sendo elas:

1 – Geração de valores: esta funcionalidade inseria 1000 registros no SQL CE toda vez que fosse acionada, populando a base com uma quantidade grande (comparada ao porte do dispositivo) de registros. A estrutura da classe que produziu esses dados na base de dados é a da imagem abaixo:

[Table(Name="tbLoadTest")]
public class TargetItem
{
    [Column(Name="ldtId", IsPrimaryKey=true, IsDbGenerated=true, CanBeNull=false,AutoSync=AutoSync.OnInsert)]
    public int Id { get; set; }

    [Column(Name="ldtTitle", CanBeNull=false)]
    public string Title { get; set; }

    [Column(Name = "ldtDescription", CanBeNull = false)]
    public string Description { get; set; }

    [Column(Name = "ldtValue", CanBeNull = false)]
    public decimal Value { get; set; }

    [Column(Name = "ldtInsertDate", CanBeNull = false)]
    public DateTime InsertDate { get; set; }
}

2 – Apagar itens do banco de dados: para limpar o banco de dados (e não deixar meu celular poluído) foi criada uma funcionalidade de expurgo dos dados.

3 – Listagem de arquivos: essa é a motivação de nosso teste de carga. Saber o quão rápido um determinado layout poderia ser carregado na tela do device e qual a quantidade ideal de registros que podem ser carregados sem interferir na performance do aparelho.

O interface do teste de carga ficou assim:

performance

RESULTADOS

Os resultados foram bastante interessantes. A carga de mil itens foi bastante rápida, em menos de 1,5 segundos foi possível incluir mil registros de uma única vez no SQL Ce. A carga de itens no listbox foi mais surpreendente ainda, em 1 segundo foram carregados mil itens na tela, em 2 segundos foram carregados mil registros e em 3,5 segundos foram carregados cinco mil registros na tela. O único ponto que a performance não agradou foi a parte de exclusão de registros, pois ela demorou muito para excluir todos os registros (demorou 1m35s para excluir 5000 registros), possivelmente isso esteja atrelado ao funcionamento do SQL CE e de seu transaction log.

Mas em suma, a performance do Windows Phone esta acima do esperado e seus resultados foram bastante satisfatórios.

APARELHO UTILIZADO

Samsung I8700 Omnia 7

OS: Microsoft Windows Phone 7.5

Chipset: Qualcomm QSD8250 Snapdragon

CPU: 1 GHz Scorpion

GPU: Adreno 200

Referência: http://www.gsmarena.com/samsung_i8700_omnia_7-3537.php

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.