2013-08-21 3 views
0

J'ai deux fichiers A et B. A contient 17000 enregistrements et B aura également environ 17000 enregistrements. Je veux comparer chaque enregistrement de B avec A et tous les enregistrements dans B qui ne correspondent pas dans A devraient être envoyés à un autre fichier. Je remplis un tableau avec le contenu de A, puis extrait les enregistrements un par un de B et essaye de le trouver dans A en utilisant la recherche binaire.Infrastructure de données utile ou Optimiser le cas suivant

Je suis heureux avec le temps pris pour rechercher cependant l'étape de peupler le tableau avec des enregistrements prend la plupart du temps (environ 80%). Comment puis-je diminuer cette fois? J'utilise PowerShell pour cela.

Répondre

2

Essayez l'applet de commande Compare-Object:

$a = Get-Content a.txt 
$b = Get-Content b.txt 

Compare-Object -ReferenceObject $a -DifferenceObject $b 

Jetez un oeil à la propriété SideIndicator du résultat. '< =' signifie que l'entrée n'existe que dans $ a (ReferenceObject), et '=>' signifie que l'entrée existe dans $ b (DifferenceObject). Vous pouvez ensuite filtrer le résultat en utilisant Where-Object et écrire l'InputObject dans un autre fichier

+0

Salut shay cela s'exécute bien si le fichier a un petit nombre d'enregistrements mais pour mon cas cela prend beaucoup de temps. Je veux que cette opération soit faite en 10 secondes alors que le rite maintenant prend environ 20 secondes ... et 16 secondes sont prises en remplissant le tableau ... y a-t-il un moyen qui peut être accéléré? – rAmAnA

+0

PowerShell n'est pas toujours l'outil de pari pour une tâche spécifique, je me demande si le tri du contenu avant la comparaison aide. –

Questions connexes