Hirdetés
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Invázió egy novellában 3-4. (Update) +5. fejezet! (18+ nyelvezet)
- sziku69: Szólánc.
- Sapphi: StremHU | Source – Self-hostolható Stremio addon magyar trackerekhez
- laskr99: DFI és DFI Lanparty gyűjteményem
- GoodSpeed: A RAM-válság és annak lehetséges hatásai
- Meggyi001: Eldugott helyek Párizsban, amiket jó eséllyel még nem láttál... 2. rész.
- LordAthis: Mission: Imposible? - Együtt 1333 és 1600 MHz, ECC/Non-ECC
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
Új hozzászólás Aktív témák
-
joysefke
veterán
Sziasztok, csináltam egy példa kódot List<List<Color>> struktúra létrehozására. Tudom, hogy a listakreálás lassú, stb, de szükségem van a felxibilitására.
Készítettem egy benchmarkot úgy hogy párhuzamosság nélkül kreálok egy 4000 elemű List<> szerkezetet amit List<Color> elemeket tartalmaz (4000 elemű lista üres List<Color> elemekkel). Majd ugyanezt a listát megkreálom 250 elemű szublisták konkatenálásával, melyeket külön taskonként asszinkron módon hozok létre.
A kód változtatás és többletmunka nélkül fordul Visual Studióban
azt látom, hogy a párhuzamosítással nem tudok érdemi sebességelőnyt elérni. Én csinálok valamit nagyon rosszul, vagy a .NET olyan ravasz, hogy a List<List<>> kreálását már magától párhuzamosan végzi???
Előre is köszi !
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Diagnostics;
namespace ConsoleApp30
{
class Program
{
private const int width = 4000;
private const int height = 3000;
//Ez lesz a delegate függvény a Taskok megkreálásához
static public List<List<Color>> createSublist (int n, int height)
{
List<List<Color>> result = new List<List<Color>>(n);
for (int i = 0; i< n; ++i)
{
result.Add(new List<Color>(height));
}
return result;
}
static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
Stopwatch stopwatch1 = new Stopwatch();
List<List<Color>> pixelList = new List<List<Color>>(width);
//Listakreálás párhuzamosítás nélkül
stopwatch.Start();
for (int i = 0; i < width; ++i)
{
pixelList.Add(new List<Color>(height));
}
stopwatch.Stop();
Console.WriteLine("Sequential :" + stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
int numOfCores = Environment.ProcessorCount;
int numOfTasks = numOfCores * 4;
Task<List<List<Color>>>[] tasks = new Task<List<List<Color>>>[numOfTasks];
long[] threadCreations = new long[numOfTasks];
stopwatch.Start();
for (int i= 0; i< numOfTasks; ++i)
{
stopwatch1.Start();
tasks[i] = new Task<List<List<Color>>> (() => createSublist(width / numOfTasks, height));
stopwatch1.Stop();
threadCreations[i] = stopwatch1.ElapsedMilliseconds;
stopwatch1.Reset();
}
for (int i=0; i< numOfTasks; ++i)
{
tasks[i].Start();
}
for (int i = 0; i < numOfTasks; ++i)
{
Console.WriteLine("Task nr {0} state: {1}", i, tasks[i].Status.ToString());
}
Task.WaitAll(tasks);
stopwatch.Stop();
Console.WriteLine("Creating {0} sublists in parallel took: {1} ms", numOfTasks, stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
for (int i = 0; i < numOfTasks; ++i) {
Console.WriteLine("Creating task nr {0} took: {1} ms", numOfTasks, threadCreations[i]);
}
stopwatch.Start();
IEnumerable<List<Color>> result = tasks[0].Result.AsEnumerable();
for (int i = 1; i < numOfTasks; ++i)
{
result = result.Concat(tasks[i].Result);
}
var cList = result.ToList();
stopwatch.Stop();
Console.WriteLine("Concat of {0} Lists took :{1} ms", numOfTasks, stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
}
}
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Huawei Watch Fit 3 - zöldalma
- Érkezik az élőszereplős Far Cry sorozat az FX-től
- Kerékpárosok, bringások ide!
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Óra topik
- OLED TV topic
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Sony MILC fényképezőgépcsalád
- Ha a koreaiakon múlik, még évekig ingünk-gatyánk rámehet a memóriákra
- További aktív témák...
- Apple iPhone 11 64GB, Kártyafüggetlen, 1 Év Garanciával
- Készpénzes számítógép PC félkonfig alkatrész hardver felvásárlás személyesen / postával korrekt áron
- Wacom Cintiq DTK-2260 digitális rajztábla
- Kuriózum: Ozark Trail (amerikai) fejlámpa 600 lumen
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

