The Fight over California's Ancient Water
theatlantic.com2 pointsby orware1 comments
50 million took ~6 hours 22 minutes to complete (with ROWID):
Start Time: Sunday, February 14, 2021 9:12:29 AM
End Time: Sunday, February 14, 2021 3:34:46 PM
50 million took ~5 hours 46 minutes to complete (without ROWID):
Start Time: Sunday, February 14, 2021 7:51:38 PM
End Time: Monday, February 15, 2021 2:05:30 AM
File size comparison: 5.28 GB (50 million rows, with ROWID)
2.61 GB (50 million rows, without ROWID)
Search Time comparison: TotalMilliseconds : 216245.7246
Example performance of the SQL query: TotalMilliseconds : 20.8543
I then ended up finding this implementation of a Binary Search option (rather than the naive approach Select-String takes above) that Chris Dent put together here:
https://www.indented.co.uk/powershell-file-based-binary-sear... TotalMilliseconds : 40.3749
(For these runs comparing against the Binary Search option, the SQLite query ran in): TotalMilliseconds : 4.9491
All in all, now that I have discovered the Binary Search option that one would be workable without needing to do anything at all (except to make sure to download the "Ordered By Hash" version of the hashed password list) and use it directly, although I believe once the import has completed of the full password file into SQLite (using the WITHOUT ROWID option) the file size for the database should be fairly close to the actual txt file size (the text file size is 25.1 GB currently with close to 630 million lines in it...based on the smaller batch conversions to SQLite, I think the full import should be in the low 30 GB range).