Hi,
I will try and explain everything so that I do not miss out on anything important.
Winform - .NET 4.0 DataGridView
Loading 25000 rows of data which is bound to a Datagridview using BindingSource
Out of a total 50 something columns, 7 columns have encrypted data (Blowfish)
After the data load is complete - looping all rows to decrypt info
This takes a whopping 9 minutes
Help needed to:
Bring the loading time down
Exclusion of any field is not an option
Loading all 25000 is also a requirement
I think I have tried a lot of methods to reach to this point, but I think I need some to figure the last bit out. Some of my friends said they could load data using WPF collections (0.25 million records per minute). I do not know if that's true but this being a VB.NET Winform app - please suggest anything I can try to speed up the application load times.
Many thanks.
What I have tried:
1. Lazyloading - uses a Background worker to decrypt records in datatable. This currently works and helps keep the UI responsive but the user cannot export the data unless the decryption is complete. Takes appox. 8 mins to complete.
2. Hardloading - Using
Parallel.ForEach
looped through all records in Datatable. This completes the job in half the time i.e. 4 mins but the UI becomes unresponsive at times. Also the CPU usage goes to 100%. Used MaxDegreeOfParallelism as a variable but using anything above 2 freezes the GUI.
3. Eagerloading - normally loop through all records in Datatable using
For Each
This takes about 9 mins to complete.