Robert Jordan wrote:
> 
> Yoav HaCohen wrote:
>> Here is my first idea:
>> 
>> Suppose we have the following code:
>> 
>> [DllImport(NATIVE_LIBRARY, CallingConvention = CallingConvention.Cdecl)]
>>         private static extern void NativeFoo(int temp, out int cx, out
>> int
>> cy);
>> 
>> public System.Drawing.Point Foo()
>> {
>>      int cx, cy;
>>      NativeFoo(int a, out cx, out cy);
>>      return new System.Drawing.Point(cx, cy);
>> |
> 
> I'm aware that you did not intend to start a discussion
> about p/invoke, but I could not resist (1):
> 
> You don't want to p/invoke just to get one point out of
> the unmanaged world. The managed/unmanaged transition
> is too costly for this. Any optimization done by the JIT
> after this call would be pointless.
> 
> When dealing with (arrays of) Point/Rectangle/Size (and other similar
> well known structs), there is a (rather dirty) way to gain speed:
> 
> Define Point/Rectangle/Size as structs in the unmanaged
> world and pass them by reference back and forth.
> 
> Robert
> 
> (1) that's why designers are using "lorem ipsum" paragraphs for
> prototyping ;)
> 
> _______________________________________________
> Mono-list maillist  -  Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
> 
> 


I know that it's costly to call unmanaged from managed code but there are a
good reason in this case for doing that.

Anyway, this is just an example, such cases can be also found in the managed
code.

My philosophy is that there is no "pointless" optimization if nothing is
required from the developer.

Yoav
-- 
View this message in context: 
http://www.nabble.com/Code-optimizations-tp22119164p22138683.html
Sent from the Mono - General mailing list archive at Nabble.com.

_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to