Hi Denis, On Fri, Sep 30, 2011 at 10:59 AM, D. Barbier <bou...@gmail.com> wrote:
> On 2011/9/30 István Csanády wrote: > > Thanks Thomas, this solved the leaking issue. Any ideas for a workaround > for > > the MMGrOpt crash (when I don't remove gcurve.GetObject())? Or I will > have > > to wait for pyocc 0.6? > > Hello, > > Can you please check whether your crash happens with OCE 0.6.0? We > fixed a bug which looks similar, so maybe it is gone. > If it crashes, how can I reproduce it? I tried your > example_GC_istvan.py file with MMGT_OPT set to 0, but it does not > crash. > > I will have to recompile pythonocc for this, I will do it this afternoon. > > Last night I have been profiling some pythonocc code and I have noticed > that > > collect_object is a quite slow even if I remove logging. Probably it has > > some potential to increase pythonocc's performance. Since it is always > > called when an object is destructed it makes sense to remove somehow the > > costly string compares for the Handle objects. For example if it is > possible > > in OCE in the Handle class generator (handle classes are generated > > automatically, aren't they?) can be modified that every Handle class > should > > subclass from an empty marker class (eg. class HandleMarkerClass{}) and > this > > can be used in the GC by checking only > > isinstance(obj_deleted,HandleMarkerClass), removing > > the obj_deleted.__class__.__name__.startswith('Handle'). > > AFAICT all handles derive from either Handle_Standard_Transient or > Handle_Standard_Persistent, so your solution can be implemented > without changes in C++ code. > > > The hasattr calls > > might also can be replaced by some tricky way but I don't know if it > worth > > it but I think it does since hasattr searches in a python dictionary > which > > is a hashmap and a single isinstance is might be less costly than a dict > > lookup. But replacing somehow the string compare IMO would definitely > worth > > it. > > But these are only ideas I don't know OCC's structure very well. > > I guess that > hasattr(obj_deleted,"GetHandle") > can be replaced by > isinstance(deleted, OCC.Standard.Standard_Transient) or > isinstance(deleted, OCC.Standard.Standard_Persistent) > > Yes, Thomas did exactly this. István
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users