Difference between revisions of "Calc/Proposal DataPilot byIBM"
From Apache OpenOffice Wiki
< Calc
((checkpoint save)) |
|||
Line 2: | Line 2: | ||
== Background== | == Background== | ||
− | + | '''Low performance when update a datapilot table''' | |
− | + | Environment: Hardware: IBM T30 CPU: 2.4 GHz Memory:1.0 GB Operation System: Window XP SP2 | |
+ | Sample file: The datapilot table's source data have 5000 rows. | ||
+ | [[Image:pvt test result.jpg]] | ||
+ | '''Crash''' | ||
+ | Insert two field into row area ( Each field have about 1000 members ),it causes freezing and crash. | ||
== Problem Description == | == Problem Description == | ||
'''Allocate a lot of abundant data''' | '''Allocate a lot of abundant data''' | ||
Line 10: | Line 14: | ||
Member A1 in L1 field will create a array for all members {B1,B2,B3}. But only B1 is visible and valid. | Member A1 in L1 field will create a array for all members {B1,B2,B3}. But only B1 is visible and valid. | ||
'''Allocate too much memories''' | '''Allocate too much memories''' | ||
− | Every member stored a big structure. | + | Every member's data is stored in a big structure. |
− | '''Set too many border styles for output area''' | + | '''Set too many times of border styles for output area''' |
Some borders are set twice or more. | Some borders are set twice or more. | ||
+ | |||
== Solution == | == Solution == | ||
+ | |||
'''Data Source buffer''' | '''Data Source buffer''' | ||
A document stored a source buffer array. Every table have a buffer id. The datapilot table can use the same id if they have same data source. | A document stored a source buffer array. Every table have a buffer id. The datapilot table can use the same id if they have same data source. |
Revision as of 07:47, 23 June 2009
Background
Low performance when update a datapilot table Environment: Hardware: IBM T30 CPU: 2.4 GHz Memory:1.0 GB Operation System: Window XP SP2 Sample file: The datapilot table's source data have 5000 rows. File:Pvt test result.jpg Crash Insert two field into row area ( Each field have about 1000 members ),it causes freezing and crash.
Problem Description
Allocate a lot of abundant data For a simple datapilot table:Member A1 in L1 field will create a array for all members {B1,B2,B3}. But only B1 is visible and valid. Allocate too much memories Every member's data is stored in a big structure. Set too many times of border styles for output area Some borders are set twice or more.
Solution
Data Source buffer A document stored a source buffer array. Every table have a buffer id. The datapilot table can use the same id if they have same data source. In the buffer, the members of a field can be identified by an id( the sorted index ). Then in the output table's algorithm the ScDPItemData structure is replaced by an id. Only allocate visible member Enhancement of setting the border style