Board index » delphi » 25 times more Memory consumption with ADT fields (ORACLE 8)

25 times more Memory consumption with ADT fields (ORACLE 8)

Dear Borland Support (or other persons able to help us)

we have detected a real big problem using ADT_Fields within ORACLE8. After
some testing I have brocken down the problem into a large memory consumption
within the BDE!

The Result is (using Delphi 4.0 SP 3 and BDE 5.01 latest patch ):

Same Field-Structure using ADT_Fields consumes about 25 times more memory!
(see test structure the message)

I have putted my findings together in a easy to install test program.

a) first create the test structures using the SQL.Script CreateTables
b) compile the example program (change the DataBase-Alias to the right Alias
and connect)
c) fill the tables with testdata by pressing the "Fill" buttons
d) Open your NT-Task-Manager and look at the resources during pressing the
"Open"-Buttons

We really need an answer how to solve this issue because we have a project
converted to an OO-Approach together in ORACLE 8. It works with about 2000
ADT-Fields. If this memory consumption cannot be reduced to a factor of less
than 2 (which is still to big in my opinion because an ADT-Field is just a
Pointer to a structure) we can forget to use the BDE!!!

BTW: Now I understand why other testings we made where such slow. The whole
performance degrade with ADT-Fields

Regards

Gnther Schoch
gsch...@gs-soft.com

the test programm I attached to a separate message (follow the thread)

--- Test-Structure ---

create or replace type TEST_ADT_TYPE as object
( VALUE     NUMBER(20,0) NULL,
  FLAG      VARCHAR2(2) NULL,
  FLAG2     CHAR(1) NULL
);
/

CREATE TABLE TEST_ADT (
       SNO       NUMBER(10,0) NULL,
       ADT_VALUE Test_ADT_Type
);

CREATE TABLE TEST_NORMAL (
       SNO       NUMBER(10,0) NULL,
       VALUE     NUMBER(20,0) NULL,
       FLAG      VARCHAR2(2) NULL,
       FLAG2     CHAR(1) NULL
);

 

Re:25 times more Memory consumption with ADT fields (ORACLE 8)


Just as an addtional remark

There is as well a memory leak. Just open and close a Query 1000 times (with
the ADT-Field) and you will see the memory disappear.

Have we really to switch away from the BDE?

Regards

Gnther Schoch

gs-soft

Other Threads