From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
le 04-15-2014 07:33 AM
Bonjour à tous.
Je cherche à extraire tous les doublons d'un tableau afin de n'avoir que des éléments dont la valeur est unique dans mon tableau de sortie.
Ex :
[1-1-2-2-3] => [1-2-3]
J'ai essayé le diagramme suivant, mais son temps d'éxecution s'acroit de façon exponentielle avec le nombre d'éléments à traiter (plusieurs secondes par tableau de 64k).
(la condition "0, défaut" contient un simple fil de liaison)
Existe-t-il un algorythhme plus rapide, ou un moyen d'optimiser celui-ci?
Merci d'avance pour votre aide.
Ben.
Résolu ! Accéder à la solution.
le 04-15-2014 09:36 AM
Bonjour,
Sur la base des données que tu as donné, j'ai fait un VI qui semble plus efficace.
Par contre, la méthode proposée nécessite de trier les données dans l'ordre croissant.
En espérant que ca aide.
Maxime R.
CLA - Certified LabVIEW Architect / Architecte LabVIEW Certifié
CTA - Certified TestStand Architect / Architecte TestStand Certifié
le 04-15-2014 10:54 AM
C'est peut-être (très probablement) une bétise, mais si on sépare le tableau en deux et que l'on traite les deux parties par deux coeurs différents (chacun dans des structures cadencés lié à un coeur en particulier), ça n'irait pas plus vite ?
Kaleck
le 04-16-2014 02:38 AM
C'est n'importe quoi ce que j'ai écrit juste avant (et je peux plus éditer le message )
Séparer le tableau en 2 ne va pas résoudre le probleme de doublons entre les deux sous-parties.
De plus, je pense que du code en parallèle est automatiquement gérer par plusieurs coeurs, pas besoin de passé par des structures où l'on indique quel coeur s'occupe de tel code.
le 04-16-2014 03:09 AM
Maxime.
Effectivement, ta méthode est beaucoupplus efficace! Le fait de devoir trier le tableau en amont n'est pas gênant. On dirait que le ralentissement venait de la fonction "Rechercher dans un tableau". Toujours bon à savoir... Surtout quand les temps d'éxécution sont critiques pour l'application.
Encore merci pour ton aide.
le 04-16-2014 04:47 AM
De rien,
En fait, ca parait logique, la fonction rechercher dans un tableau va scanner a chaque tour de boucle le tableau en entier alors que ma méthode proposée ne balaye qu'une seule fois le tableau d'où le gain en performance, mais par contre, elle implique le tri des données qui pourrait ne pas conveni à tout le monde.
Bonne journée.
Maxime R.
CLA - Certified LabVIEW Architect / Architecte LabVIEW Certifié
CTA - Certified TestStand Architect / Architecte TestStand Certifié
04-16-2014 05:42 AM - modifié 04-16-2014 05:43 AM
elle implique le tri des données qui pourrait ne pas conveni à tout le monde.
cela se fait sur une "copie" du Tableau, et cela ne pose donc aucun soucis.
(je ne vois pas en quoi cela pourrait "ne pa convenir")
de plus ... la fonction "reverse 1D" est très rapide
Je pense même que le LV ne "touche" pas réellement au Tableau.
permuter l'index de fin avec celui du début, inverser le signe pour toutes formes d'accès au Tableau ...
(uniquement pour cette copie du Tableau) Quelque chose comme ça ... ça devrait être bon.
"retourner" réellement le Tableau serait, je pense, un manque d'imagination.
et je pense que les développeurs de LV n'en manque pas.
Ma main à couper que le Tableau est retourné en changeant un pointeur et un ou deux signes.
le 04-16-2014 07:59 AM
Salut ouadji
C'est pas tellement sur la copie en mémoire du tableau, mais effectivement, c'est a prendre en compte sur de très grand tableaux.
Ma remarque sur le "qui pourrait ne pas convenir à tout le monde", c'était juste dans le cas où on souhaiterai supprimer les doublons tout en gardant l'ordre dans lequel les données sont présentent initialement dans le fichier. C'est ce que fait la méthode proposée au début.
Du coup c'est un compromis à faire, vitesse en triant les données pour n'avoir a balayer le tableau qu'une seule fois, ou garder l'ordre, mais rechercher les données dans le tableau qui est beaucoup plus gourmand sur des gros tableaux.
A+
Maxime R.
CLA - Certified LabVIEW Architect / Architecte LabVIEW Certifié
CTA - Certified TestStand Architect / Architecte TestStand Certifié