Usufruire di tutti i core CPU

di il
2 risposte

Usufruire di tutti i core CPU

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.

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte