IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Optimisation code trop lent


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut Optimisation code trop lent
    Bonjour,

    Je vous sollicite concernant un problème de lenteur dans une fonction.

    Pour vous mettre dans le contexte, cette fonction est implémentée dans un AddIn Outlook. Elle est chargée de vérifier la présence d'une tâche dans la liste des tâches.

    La voici :
    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
    26
     public int VérifierPrésenceTache(object Item)
            {
     
                _listeTâches.Clear();
                List<TaskItem> tacheItems = _taskBox.Items.OfType<TaskItem>().ToList();
                Regex regex = new Regex(@"^[A-Z][0-9]{6}$");
     
     
                if (Item is TaskItem)
                {
                    if (regex.IsMatch(((TaskItem)Item).Subject.Substring(0, 7)) || ((TaskItem)Item).Subject.Length < 7)
                    {
                        return 999;
                    }
     
                    _listeTâches = tacheItems.FindAll(t => t.Subject.ToUpper().Contains(((TaskItem)Item).Subject.ToUpper()));
     
                }
                else if (Item is AppointmentItem)
                {
                    _listeTâches = tacheItems.FindAll(t => t.Subject.ToUpper().Contains(((AppointmentItem)Item).Subject.ToUpper()) || ((AppointmentItem)Item).Subject.ToUpper().Contains(t.Subject.ToUpper()));
     
                }
     
                return _listeTâches.Count;
            }
    Elle met plusieurs seconde à s'executer. La majeur partie de ce temps est utiliser par la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<TaskItem> tacheItems = _taskBox.Items.OfType<TaskItem>().ToList();
    Je ne vois pas comment faire pour réduire ce temps. Si l'un d'entre vous à une idée.

    Je vous remercie pour le temps passé sur mon post.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En essayant ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<TaskItem> tacheItemstemp = new List<TaskItem> ;
    tacheItemstemp.AddRange(_taskBox.Items) ;
    List<TaskItem> tacheItems = tacheItemstemp.OfType<TaskItem>().ToList();
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Il y a une erreur sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tacheItemstemp.AddRange(_taskBox.Items) ;
    La méthode n'accepte que les type IEnumerable et non les MAPIFolder.Items.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    _taskBox.Items.AsEnumerable().OfType<TaskItem>().ToList()

    voir

    _taskBox.Items.ToList().OfType<TaskItem>().ToList()

    Sans aucune garantie

Discussions similaires

  1. Code trop lent pour une écriture sur disque
    Par Anarchy64 dans le forum C
    Réponses: 6
    Dernier message: 12/12/2013, 19h54
  2. code trop lent
    Par dmoluc dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/12/2012, 18h16
  3. Code trop lent à optimiser
    Par deuche dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/10/2011, 16h18
  4. Code trop lent: recuperation de donnees dans un autre classeur
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/01/2010, 10h43
  5. [Eclipse] Editeur de code trop lent
    Par Benzeghiba dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 10/11/2005, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo