Disposable<T>

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Disposable<T>

snovik
Hi,

I am on the team to port ql to c# .net and trying to understand the reasons behind Disposable<T> class. It looks to me like a tricky memory-saving excercise and I wonder if it really is or there are other reasons.

would be very grateful.

rgds
s
Reply | Threaded
Open this post in threaded view
|

Re: Disposable<T>

Luigi Ballabio
On Mon, 2008-04-21 at 08:19 -0700, snovik wrote:
> I am on the team to port ql to c# .net and trying to understand the reasons
> behind Disposable<T> class. It looks to me like a tricky memory-saving
> excercise and I wonder if it really is or there are other reasons.

It's not for saving memory---it's for performance. C++ has pass-by-copy
semantics. If we write:

Array operator*(Matrix, Array) {
    ...
    return a;
}

and then

u = M*v;

there will be at least one allocation and one copy of the array
elements, possibly two if the compiler doesn't optimize aggressively.
Disposable<T> removes some of them; not for saving memory, but for
saving time.  If C# returns values by reference, you don't need it in
your port.

Luigi


--

There are two ways of constructing a software design. One way is to
make it so simple that there are obviously no deficiencies. And the
other way is to make it so complicated that there are no obvious
deficiencies.
-- C. A. R. Hoare



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: Disposable<T>

Luigi Ballabio

On Apr 29, 2008, at 5:55 PM, Luigi Ballabio wrote:

> On Mon, 2008-04-21 at 08:19 -0700, snovik wrote:
>> I am on the team to port ql to c# .net and trying to understand the
>> reasons
>> behind Disposable<T> class. It looks to me like a tricky memory-saving
>> excercise and I wonder if it really is or there are other reasons.
>
> It's not for saving memory---it's for performance. C++ has pass-by-copy
> semantics.

Also, the same applies to assignment. In C++, when we write

a = b;

you don't end up with two references (a and b) referring to the same
instance. You end up with a being a new copy of b.

Luigi

P.S. I almost forgot---good luck with your C# port...


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev