- Milyen okostelefont vegyek?
- Xiaomi 15T - reakció nélkül nincs egyensúly
- iPhone topik
- Fotók, videók mobillal
- MIUI / HyperOS topik
- Excel automatizálás, VBA, riportok – megoldom, hogy ne kézzel kelljen
- Honor 600 Lite - koffein nélkül
- Megérkezett a Samsung Galaxy A37 és Galaxy A57
- Xiaomi 13 - felnőni nehéz
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
Ú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!
- Milyen okostelefont vegyek?
- Crimson Desert
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Házimozi belépő szinten
- Parfüm topik
- Gumi és felni topik
- Kerékpárosok, bringások ide!
- Porszívók - akkus és klasszikus vezetékes
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- ROG Zephyrus G14 GA401QM 14" FHD IPS Ryzen 9 5900HS RTX 3060 16GB 512GB magyar vbill gar
- Intel Core I9 14900K - 24mag/32szál - Új, bontatlan - Gari 2028.12.27. -ig - Eladó!
- Intel I9 13900K - 24mag/32szál - Új, bontatlan - Gari 2028.03.19. -ig - Eladó!
- Pro Max 16 MC16250 16" FHD+ IPS Ultra 7 255H RTX Pro 1000 Blackwell 32GB 1TB NVMe ujjlolv gar
- Samsung Galaxy S24 Ultra 12/512GB, Megkímélt, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garanciával!
- HP 150W töltők (19.5V x 7.7A) kis kék, kerek, 4.5 x 3.0 mm
- Lenovo ThinkStation P300 Workstation,i5-4590,16GB DDR3,256GB SSD,2GB VGA,WIN11
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- HP Victus Gaming Laptop INTEL I7-14700HX / RTX 4070 32GB RAM 1TB SSD 144Hz Gari
- Új Asus ROG Zephyrus G14 OLED 2.8K G-Sync 120Hz Ryzen9 270 32GB 1TB Nvidia RTX 5070 8GB W11 Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

