Я написал веб-службу для изменения размера загруженных пользователем изображений, и все работает правильно с функциональной точки зрения, но это заставляет процессор использовать шипы каждый раз, когда он используется. Он работает на 64-битной Windows Server 2008. Я попытался скомпилировать 32 и 64 бит и получить те же результаты.
Сердцем службы является эта функция:
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;
}
Я положил профилировщик на службу, и, похоже, большинство из них расходуется в самой библиотеке GDI +, и в моем коде не так много.
Вопросы: Я делаю что-то очень неэффективное в моем коде здесь? Это похоже на пример, который я видел.
Есть ли преимущества в использовании библиотек, отличных от GDI +? Показатели, которые я видел, похоже, указывают на то, что GDI + хорошо сравнивается с другими библиотеками, но я не нашел достаточного количества этих данных, чтобы быть уверенным.
Можно ли получить выгоды от использования блоков "небезопасного кода"?
Пожалуйста, дайте мне знать, если я не включил достаточное количество кода... Я рад поставить столько, сколько было запрошено, но не хочу быть неприятным в сообщении.