[Mono-osx] GDI+ OSX performance
Alex Shulgin
alexander.shulgin at yessoftware.com
Wed Aug 19 08:11:18 EDT 2009
LKeene wrote:
> Hi Alex,
>
> it's in response to an earlier thread I started wherein I was getting very
> poor performance. Someone suggested it was due to Graphics object
> allocations being a bottleneck:
>
> http://www.nabble.com/Horrible-performance-on-Mac%2C-need-advice.-td24507897.html
>
> Any thoughts on the matter? I'm soon going to tackle this performance issue
> full-force and I'd very much like to get some ideas of where (in general) to
> start.
I hope you are not trying to say that the code you presented in that
mail[1] is executed in the tight loop. Otherwise it's strange to expect
it to perform any good.
//...
handle = GCHandle.Alloc(Channel1BitmapBytes, GCHandleType.Pinned); //
Pin the array.
IntPtr channel1PTR =
Marshal.UnsafeAddrOfPinnedArrayElement(Channel1BitmapBytes, 0);
Channel1Bitmap = new Bitmap(this.CanvasWidth, this.CanvasHeight,
stride, myPixelFormat, channel1PTR);
// ...later on (in Paint event handler for example)...
Graphics grafix = Graphics.FromImage(Channel1Bitmap);
> "Channel1BitmapBytes" is a declared globally (within the context of
> "this") and, because the array is pinned, I can write to it in
> multi-threaded fashion.
I fail to see how pinning the array helps in multi-threaded access. Do
you use any synchronization primitives?
Also, did you try profiling?
--
Kind regards,
Alex
[1] http://go-mono.com/forums/#nabble-p24577325
> Alexander Shulgin wrote:
>> LKeene wrote:
>>> Hello all, I'm revisiting an old issue. Has anyone seen (big) performance
>>> issues with Mono + OSX regarding the use of:
>>>
>>> Graphics grafix = Graphics.FromImage(SomeBitmap); ?
>> No. Why?
>>
>> --
>> Alex
More information about the Mono-osx
mailing list