[vtkusers] c# port of VTK

Sean McInerney seanm at nmr.mgh.harvard.edu
Tue Aug 3 03:01:26 EDT 2004


Andy,

   My apologies if I came across as kind of a buzz kill. It sounds like 
an interesting project. I'm mostly a C++ and Unix guy ... so take my 
perspective with a grain of salt when it comes to C# and windows ;-)

-Sean

Lars Overgaard wrote:
> Hi Andy,
> 
> I will stay out of the discussion of why you should do (or not do) your
> project and just answer your initial question.
> 
> I have experienced the huge overhead introduced by garbage collection
> and
> managed code. I write embedded applications and need both speed and
> (close to)
> real-time response.
> 
> My preference would definitely be choice no. 3: use a 'Vector3' value
> type.
> I wouldn't hardly notice the slightly changed syntax - and the
> alternative
> choices would simply kill my applications.
> 
> So, Andy, I encourage you to continue your interesting project using a
> 'Vector3' value type.
> 
> Good luck! Please let us know how your work is progressing.
> 
> Best regards,
> 
> Lars Overgaard
> Software Engineer, Ph.D.
> MIKROFYN A/S
> * E-mail: lov at mikrofyn.com
> : Web:     www.mikrofyn.com
> ( Phone: +45 66170784
> ( Direct: +45 63170510
> h Fax:     +45 66170785
>  
> 
> 
> -----Oprindelig meddelelse-----
> Fra: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] På vegne
> af Andy Somogyi
> Sendt: 2. august 2004 02:35
> Til: vtkusers at vtk.org
> Emne: [vtkusers] c# port of VTK
> 
> 
> Hello VTK users
> 
> I am in the process of completly porting VTK (4.2) to c#.
> As this is c#, it can be used nativly from any .net language.
> 
> When finished, it will be freely availble under the existing VTL
> lisence.
> 
> My question is this:
> 
> The c++ version of VTK uses length 3 arrays to represent a vector in 3
> space. This is fine in c++ because you can create arrays on the stack.
> 
> It is not possible to create a managed array in c# on the stack, they
> are allways heap allocated and garbage collected. So using a large
> number of managed arrays, or creating large numbers of transitory arrays
> is very inefficient.
> 
> The use of a 'value type' or a 'struct' in other words is far more
> effcient when large numbers of objects are involved as they are created
> on the stack and are not garbage collected.
> 
> I have thought about using a raw double pointer (double*) instead of an
> managed array for all functions that use a vector (double[3]). This has
> the advantage of being very fast, but on the other hand, it is highly
> error prone, and a user of one of these functions must declare thier
> method 'unsafe'. I would suspsct that this would discourage many users.
> 
> There are many good vector and matrix classes avaible for .net, such as
> the standard vector and matrix types that ship with directx 9.
> 
> So my question to any perspective vtk.net users is would you prefer all
> existing methods that currently accept a c++ style array (double[3])
> accept the following in the new c# port:
> 
> 1: managed array (new double[3])
>      advantages:
>      1.1 farmiliar syntax
>      1.2 do not have to declare 'unsafe' code
>      disadvanteges:
>      1.2 very ineffcient both in terms of size and performance
> 
> 2: unmanaged pointer (double*)
>      advanteges:
>      2.1 very effecient
>      disadvantes:
>      2.2 error prone
>      2.3 need to pin a managed array or use 'stackalloc'
> 
> 3: use a 'Vector3' value type
>      advanteges
>      3.1 very effcient
>      3.2 very safe
>      3.3 easy to convert to and from a 'double*'
>      disadvantes:
>      3.3 introduces unfarmiliair syntax
> 
> Any ides or oppinions would be greatly appcieated
> 
> thanks
> 




More information about the vtkusers mailing list