Hallo Leute,
ich wollte mal etwas mit der .Net Parallelen Bibliothek herumspielen, doch leider hielt sich mein Erfolg leider in Grenzen. Ich habe jetzt einfach ein mini Programm erstellt, das nichts anderes macht, als hochzuzählen und damit CPU Zeit zu verbrauchen.
Nun, bei dem sequentiell laufendem Code bekomme ich bei einer 2-CPU Maschine eine Laufzeit von 10 Sekunden, bei dem Parallel.For Teil sind es rund 25 Sekunden. Ich erkläre es mir eigentlich durch einen höheren Overhead, der zum erstellen und verwalten der Threads notwendig ist.
Jetzt stellen sich mir zwei Fragen:
1) Lohnt sich das paralleles Programmieren nicht, wenn ich eine geringe Last in den Threads habe?
2) Wieso hat der Compiler den Schrott, den ich geschrieben habe, nicht einfach weggeputzt? In der Regel ersetzt er doch so ein Quatsch durch feste Werte.
ich wollte mal etwas mit der .Net Parallelen Bibliothek herumspielen, doch leider hielt sich mein Erfolg leider in Grenzen. Ich habe jetzt einfach ein mini Programm erstellt, das nichts anderes macht, als hochzuzählen und damit CPU Zeit zu verbrauchen.
Code:
DateTime beginTopDownTime = new DateTime(0);
DateTime endTopDownTime = new DateTime(0);
Int64 bla = 1;
beginTopDownTime = DateTime.Now;
for (Int64 i = 1; i < 2000000000; i++)
{
bla += i;
}
endTopDownTime = DateTime.Now;
TimeSpan topDownTime = (TimeSpan)(endTopDownTime - beginTopDownTime);
MessageBox.Show("bla" + bla + " " + topDownTime);
bla = 1;
beginTopDownTime = DateTime.Now;
Parallel.For(0, 2000000000, i => {
bla += i;
});
endTopDownTime = DateTime.Now;
topDownTime = (TimeSpan)(endTopDownTime - beginTopDownTime);
MessageBox.Show("bla" + bla + " " + topDownTime);
Nun, bei dem sequentiell laufendem Code bekomme ich bei einer 2-CPU Maschine eine Laufzeit von 10 Sekunden, bei dem Parallel.For Teil sind es rund 25 Sekunden. Ich erkläre es mir eigentlich durch einen höheren Overhead, der zum erstellen und verwalten der Threads notwendig ist.
Jetzt stellen sich mir zwei Fragen:
1) Lohnt sich das paralleles Programmieren nicht, wenn ich eine geringe Last in den Threads habe?
2) Wieso hat der Compiler den Schrott, den ich geschrieben habe, nicht einfach weggeputzt? In der Regel ersetzt er doch so ein Quatsch durch feste Werte.