Is there a way to increase Where-Obeject
comparison. Its Ok with 1000 records in both files but when files are more then 500k records its really slow.
function progressBar ($i, $totalItems) {
Write-Progress -Activity "My Progress Bar" -Status "Doing stuff on $s" -PercentComplete ($i / $totalItems * 100)
}
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
$f1 = (Import-Csv 'A.txt' -Delimiter 'µ' -Header samname, id)
$f2 = (Import-Csv 'B.txt' -Delimiter 'µ' -Header samname, id)
$counter = 0
$totalItems = $f1.Count
$f1 | ForEach-Object {
$samname = $_.samname
if ($m = $f2 | Where-Object {$_.samname -eq $samname}) {
$_.id = $m.id
} else {
$_.id = $_.id
}
$counter += 1
#Start-Sleep -s 3
progressbar -i $counter -totalItems $totalItems
}
$f1 | Export-Csv 'D.txt' -NoType