Ciao a tutti,
ho questo codice che funziona bene finché non ho mole di dati grandi.
Se carico troppo, mi trovo attese anche di 2 minuti.
In pratica ho un MainMethod che mi chiama un altro metodo SuperEngine che a sua volta chiama metodi per ulteriori calcoli.
Il metodo SuperEngine mi dura troppo.
Ho provato a trasformare il foreach in parallel.foreach, ma mi escono errori di cross thread.
Non so come usarlo bene.
Come faccio a velocizzare il tutto?
Ecco codice:
private List<string> MainMethod(List<byte> n_list)
{
foreach (var n in n_list)
{
var res = SuperEngine(n, FirstMethod(), SecondMethod());
// DO STUFF
// DO STUFF
// DO STUFF
foreach (var k in res)
{
// DO STUFF
// DO STUFF
}
}
}
private List<List<byte>> SuperEngine(byte n, List<DateTime> items, List<byte> letters)
{
List<List<byte>> tbl;
List<List<byte>> founded = new List<List<byte>>();
foreach (var item in items)
{
tbl = new List<List<byte>>();
var s = SearchGroup(item); // ANOTHER METHOD
var extras = LoadAllEx(s); // ANOTHER METHOD
foreach (var extra in extras)
{
var j = GetNumbers(extra);
tbl.Add(j);
}
for (int i = 0; i < tbl.Count; i++)
{
List<byte> common = tbl[i].Intersect(letters).ToList();
if (common.Count > 0)
{
var res = ThirdyMethod(common, item, n); // ANOTHER METHOD
founded.Add(res);
}
}
}
return founded;
}
Grazie a tutti
A.