Riccardo Cohen wrote:

I have a big database :
- size = 3Mo

That's small, actually.

- tables c4gis_param, c4gis_geo, c4gis_id
- c4gis_geo has 60rows, one field is a subview of 5 to 60 rows, in the subview one field is a subview of 10/50 rows

So there are perhaps a few thousand non-empty subviews in all?

In my code I simply create a storage and extract some piece of data from c4gis_param (small table):

  if (vxg->is_file())
  {
    c4_Storage sto(vxg->get_nativesys_(),false);
    if (ok)
    {
      c4_GisSpace space;
      space.loadParams(sto); //this loads information
    }
  }
  art_delete(vxg);

the destructor of "sto" is VERY slow (several minutes), here is the call stack when I break the app during process :

Destruction tends to walk through all subviews, that's all I can think of as reason for the slowness you describe. Still, a few thousand subviews really is not very much, and taking minutes to go through everything sounds very strange.


Are you running the datafilde from a file server? There might be a lot of very small I/O requests.

Also, please be sure to use a recent version of MK (best one right now is probably CVS head). Subview handling is still being tweaked.

Before making a separate test, does anybody have an idea of what's happening ?

Another reason could be some performance problem with the memory allocator. Subviews tend to do a lot of small allocations. You did not mention column counts, but if there are many columns in the subviews, that will definitely lead to tons of tiny allocs/releases.


-jcw

_____________________________________________
Metakit mailing list  -  [EMAIL PROTECTED]
http://www.equi4.com/mailman/listinfo/metakit

Reply via email to