On Sun, 27 Jan 2013, Sven Barth wrote:

On 27.01.2013 16:27, luiz americo pereira camara wrote:
2013/1/26 Sven Barth <pascaldra...@googlemail.com>:
On 26.01.2013 12:52, Alexander Klenin wrote:

On Sat, Jan 26, 2013 at 10:50 PM, Sven Barth
<pascaldra...@googlemail.com> wrote:

Generics was implemented without my knowledge. I only found out when
suddenly
the classes unit had been changed to use them. After a horrible
discussion, this was reversed, because of the drop in speed you got when
using generics.


Ah! So that is where those ifdefs in classes come from :) I always
wondered...

Is the drop still present/essential? Perhaps optimizer is now good
enough to drop those ifdefs?


Someone would need to test this. It could be that the generic variant is
less optimal, because the generic list is built upon a list that handles
pointers...


I did some test with generics last year:
http://lazarusroad.blogspot.com.br/2012/06/cost-of-using-generics.html

I would not use in classes unit

That's mostly about the "duplication" problem, which is known (maybe I'll try to improve the situation some time). What would have been more interesting is the performance of the generated code compared with e.g. a TStringList or a TObjectList.

When I tested it, there was a 10% slowdown. It is the difference between a direct pointer assignment vs. calling Move() for each assignment.

Regardless, I don't see the need of replacing proven code with generics just as a showcase for generics. If it ain't broken, don't fix it.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to