Bonjour,
Le problème :
Sur un projet de gestion d'une base de Pedigree de chevaux, j'ai des délais de construction de ComboBox trop importants à chaque ajout d'un nouveau pedigree.
Le projet:
La base est constituée d'environ 10.000 Pedigree et les informations pour chaque pedigree etant peu importante (string de 20 c max , 4 integer, 1 short, 5 Boolean) tout se passe en mémoire, la sauvegarde / chargement étant effectuée par sérialisation.
La base des Pedigree est constituée par un SortedList d'une structure :
LEs test de vitesse que j'ai réalisé avec 12000 Pedigree sont les suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 ' STRUCTURE pedigree ' Private _code As Integer Private _nom As String Private _année As UShort Private _sexeIsMale As Boolean Private _isEtalon As Boolean Private _isGagnant As Boolean Private _isChefDeRace As Boolean Private _isEtude As Boolean Private _père As Integer Private _mère As Integer Private _use As Integer Public Property code() As Integer Get Return _code End Get Set(ByVal value As Integer) _code = value End Set End Property etc... Inherits SortedList(Of String, Pedigree)
Deserialisation (load) Durée : 0,42 secondes
constitution d'un index par Numero et par Nom (pour le combo) Durée : 0,06 secondes
affectation datasource combo pedigree Durée : 1,66 secondes
A chaque ajout d'un nouveau pedigree dans la base, je dois reconstruire les Datasource de 3 combos soit environ 3 x 1,66 secondes = 5 secondes ce qui est beaucoup trop long.
Ces combos permettent juste d'obtenir la liste des pedigree par nom
Je suis obligé de réaffecter les .datasource aux combos car je ne peux effectuer un insert sur l'arraylist du combo à chaque création de pedigree.
1) L'affectation d'une source autre que ArrayList (qui permettrait un .insert) a un combo est-elle possible simplement ?
2) Pour obtenir le comportement d'un combo avec une source de données sur laquelle je puisse effectuer des insert et aussi appliquer des filtres (du style uniquement les Males), de quoi dois-je partir ?
3) Serait-il plus simple d'implémenter un combo "maison" de manière à utiliser la source que l'on veut ?
Merci de me donner votre avis et les solutions que vous choisiriez pour résoudre mon "PETIT" problème.
MS Visual Basic 2005 Express - FrameWork 2.0 - XP SP2 - Pentium 4 2.93 Ghz - 896 Mo Ram
EDIT : QUESTION SUBSIDIAIRE : Vous semble t'il normal que créer 2 arrayList (index par Numero et par Nom ... ) demande 0,06 secondes et que pour affecter un de ces 2 array au comboBox il faut 1,66 secondes !
Partager