Effizienz der Bildgrößenänderung in C # und .NET 3.5

Ich habe einen Webservice geschrieben, um die Größe der vom Benutzer hochgeladenen Bilder zu ändern. Unter funktionalen Gesichtspunkten funktioniert alles einwandfrei, aber die CPU-Auslastung nimmt bei jeder Verwendung zu. Es läuft auf Windows Server 2008 64-Bit. Ich habe versucht, auf 32 und 64 Bit zu kompilieren und bekomme ungefähr die gleichen Ergebnisse.

Das Herzstück des Dienstes ist diese Funktion:

private Image CreateReducedImage(Image imgOrig, Size NewSize)
{
    var newBM = new Bitmap(NewSize.Width, NewSize.Height);
    using (var newGrapics = Graphics.FromImage(newBM))
    {
        newGrapics.CompositingQuality = CompositingQuality.HighSpeed;
        newGrapics.SmoothingMode = SmoothingMode.HighSpeed;
        newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        newGrapics.DrawImage(imgOrig, new Rectangle(0, 0, NewSize.Width, NewSize.Height));
    }

    return newBM;
}  

Ich habe einen Profiler für den Dienst eingerichtet und es scheint, dass der Großteil der Zeit in der GDI + -Bibliothek selbst verbracht wird und in meinem Code nicht viel zu tun ist.

Fragen: Mache ich hier in meinem Code etwas auffällig Ineffizientes? Es scheint dem Beispiel zu entsprechen, das ich gesehen habe.

Gibt es Vorteile bei der Verwendung anderer Bibliotheken als GDI +? Die Benchmarks, die ich gesehen habe, scheinen darauf hinzudeuten, dass sich GDI + gut mit anderen Bibliotheken vergleichen lässt, aber ich habe nicht genug davon gefunden, um zuversichtlich zu sein.

Gibt es Vorteile durch die Verwendung von "unsicheren Code" -Blöcken?

Bitte lassen Sie mich wissen, wenn ich nicht genug Code aufgenommen habe ... Ich bin froh, so viel wie gewünscht zu veröffentlichen, möchte aber nicht unangenehm in der Post sein.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage