2010-06-15 12 views
1

J'ai deux types d'ordinateurs de poche personnalisés qui sont semblables, mais un peu différent, chacun exécutant la même application WinForm et une base de données WinCE:SQLCE DB se bloque parfois sur un portable, pas un autre

Type 1: WinCE 4.2, 400 mhz, 93244 kb Type 2: WinCE 5.0, 520 mhz, 84208 kb

Le type 1 va heureusement procéder par une opération de lot de grande taille (initiée par l'application), par Type 2 commencera systématiquement rampant (pour plusieurs à plusieurs cycles) autour de la marque de 200 cycles. À plusieurs points, il commencera à fonctionner normalement, puis à ramper à nouveau.

L'application effectue plusieurs opérations de base de données (insère, met à jour et sélectionne, pas de suppression).

Pour simplifier ma situation, je l'ai construit une petite application de test qui fait essentiellement ceci:

command_s.CommandText = "select dvr from vr where vid = 2211250"; 
command_u.CommandText = "update pvr set LocationID=81 where Status='OK' and vri = 27861"; 

while(going) 
{ 
    command_s.ExecuteScalar(); 
    command_u.ExecuteNonQuery(); 
} 

et mis hors tension en cours d'exécution sur les deux unités côte à côte. Effectivement, l'unité la plus lente (400 mhz) est plus rapide que l'unité plus rapide (520 mhz) (c'est environ 5000 cycles d'avance en ce moment) et je peux voir des pauses notables sur l'unité 520 mhz.

À quoi est-ce dû?

Répondre

0

Vous ne nous avez pas beaucoup parlé de votre environnement de test. En supposant que vous utilisez la même version de SQL CE sur les deux, il est probable que soit un pilote (système de fichiers ou bus) sur le système lent soit plus lent ou le support que vous stockez est. Par exemple, si l'un d'entre eux écrivait sur RAM et l'autre sur Flash, il est évident que le périphérique RAM fonctionnerait beaucoup plus rapidement. Moins évident peut-être que l'on utilise NAND et l'autre en utilisant NOR flash et la lenteur de la lenteur de l'écriture NAND vous affecte. Ou peut-être que vous utilisez USB et un système a un bus USB beaucoup plus rapide.

Il existe de nombreuses raisons pour lesquelles vous pourriez voir cette disparité et sans connaître un lot sur votre matériel cible, il est difficile de vous dire exactement pourquoi.

+0

Les versions de SqlCE doivent être identiques (fournies en tant qu'ensemble de référence lors de la construction de l'exe). Ils écrivent tous deux pour clignoter mais je crois que le système le plus rapide (qui fonctionne moins vite) est SDHC et le système le plus lent (qui fonctionne plus vite) est MMC. – Michael

+0

Eh bien, vous avez deux architectures de bus complètement séparées, et il est tout à fait possible que ce soit une différence de bus. Avez-vous essayé un simple fichier lire/écrire sur les deux? Je parie que vous trouverez la même différence, ce qui signifie que cela n'a rien à voir avec SQLCE et tout ce qui concerne votre matériel. Identifier le "problème" avec le périphérique CE 5.0 va probablement nécessiter un oscilloscope, Platform Builder et une compréhension approfondie des pilotes SDHC et Flash de ce système CE 5.0. – ctacke

+0

L'exécution d'un test de stress purement basé sur des fichiers sur les deux unités semble recréer le problème. Il semble que la différence SDHC vs MMC est à l'origine du problème. – Michael