View Issue Details

IDProjectCategoryView StatusLast Update
0024044CommunityOCCT:Foundation Classespublic2019-03-12 06:55
ReporterRoman Lygin Assigned Tobugmaster  
PrioritynormalSeverityintegration request 
Status closedResolutionfixed 
PlatformAOSL 
Product Version6.6.0 
Target Version6.7.0Fixed in Version6.7.0 
Summary0024044: Performance improvements: Foundation Classes (math)
DescriptionContinuation of series started in 0024042

*math
- use of automatic allocation (on stack) to minimize heap allocation. Size constants are selected such to avoid stack overflow yet maximizing chances to favor stack allocation.

Steps To ReproduceN/A
TagsNo tags attached.
Test case numberNot needed

Relationships

related to 0024042 closedapn Community Performance improvements: Foundation Classes 
parent of 0030552 assignedabv Community Foundation Classes - Stack overflow due to math_SingleTab static array size 
related to 0025746 closedbugmaster Open CASCADE Excessive memory use in math_Matrix 
child of 0024045 closedbugmaster Community Invalid test case for matrix-vector multiplication 
Not all the children of this issue are yet resolved or closed.

Activities

Roman Lygin

2013-06-25 21:43

developer   ~0024866

The fix pushed to the repository

abv

2013-06-26 06:59

manager   ~0024869

Defining size of array independently in CDL and GXX is potentially dangerous. I suggest that definition of constants N, M, and MN in GXX should be done via sizeof() of relevant class fields.

The same comment as to 0024042: if you have some numbers of performance increase this improvement gives in your case, please share.

Roman Lygin

2013-06-27 22:41

developer   ~0024907

For performance gain - please refer to 0024042.

Regarding sizeof(), do you see any better implementation than replacing each occurrence with something like (sizeof(Buf) / sizeof(Buf[0])). Though I share the desire to avoid risk of discrepancy this change would undermine code clarity, so I am not sure this is better than an explicit comment in the code. But I will change to whatever you prefer.

abv

2013-07-12 07:13

manager   ~0025041

> replacing each occurrence with something like (sizeof(Buf) / sizeof(Buf[0]))

Yes, this is what I had in mind. Please check the amended version in CR24044_1

Roman Lygin

2013-07-17 00:19

developer   ~0025090

The amendment is fine. Thanks for making it and sorry for the delay - I thought you expected me to *make* the amendment not just to *review* it.

apn

2013-07-18 16:21

administrator   ~0025114

Dear BugMaster,

Branch CR24044_1 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
SHA-1: fdbd14f0acc8325642ec1fd0553de0611f7fd57f

Number of compiler warnings:

occt component :
Linux: 2 (2 on master)
Windows: 1767 (1767 on master)

products component :
Linux: 0 (0 on master)
Windows: 288 (288 on master)

Regressions:
bugs moddata_2 bug524
http://occt-tests/CR24044-1-master-occt/Debian60-64/summary.html

Improvements:
No improvements

Testing cases:
Not needed

Testing on Linux:
Total MEMORY difference: 366693152 / 365661156
Total CPU difference: 43746.34000000115 / 44445.42000000096

Testing on Windows:
Total MEMORY difference: 427509152 / 426010604
Total CPU difference: 43613.15625 / 31424.5

There are not differences in images found by testdiff.

mkv

2013-08-15 15:04

tester   ~0025320

Dear BugMaster,
The fix should be integrated along with 0024045

Related Changesets

occt: master b28e7cc6

2013-06-25 17:42:25

Roman Lygin


Committer: bugmaster Details Diff
0024044: Performance improvements: Foundation Classes (math) Affected Issues
0024044
mod - src/math/math_DoubleTab.cdl Diff File
mod - src/math/math_DoubleTab.gxx Diff File
mod - src/math/math_SingleTab.cdl Diff File
mod - src/math/math_SingleTab.gxx Diff File

Issue History

Date Modified Username Field Change
2013-06-25 21:38 Roman Lygin New Issue
2013-06-25 21:38 Roman Lygin Assigned To => abv
2013-06-25 21:43 Roman Lygin Note Added: 0024866
2013-06-25 21:43 Roman Lygin Status new => resolved
2013-06-25 21:49 Roman Lygin Relationship added child of 0024045
2013-06-25 22:00 Roman Lygin Relationship added related to 0024042
2013-06-26 06:59 abv Note Added: 0024869
2013-06-26 06:59 abv Assigned To abv => Roman Lygin
2013-06-26 06:59 abv Status resolved => assigned
2013-06-27 22:41 Roman Lygin Note Added: 0024907
2013-06-27 22:41 Roman Lygin Assigned To Roman Lygin => abv
2013-06-27 22:41 Roman Lygin Status assigned => feedback
2013-07-12 07:13 abv Note Added: 0025041
2013-07-12 07:13 abv Assigned To abv => Roman Lygin
2013-07-12 07:13 abv Status feedback => resolved
2013-07-17 00:19 Roman Lygin Note Added: 0025090
2013-07-17 00:19 Roman Lygin Assigned To Roman Lygin => abv
2013-07-17 00:19 Roman Lygin Status resolved => reviewed
2013-07-18 16:21 apn Note Added: 0025114
2013-07-18 16:21 apn Test case number => Not needed
2013-07-18 16:21 apn Assigned To abv => Roman Lygin
2013-07-18 16:21 apn Status reviewed => assigned
2013-07-18 16:21 apn Target Version => 6.7.0
2013-08-15 15:04 mkv Note Added: 0025320
2013-08-15 15:06 mkv Assigned To Roman Lygin => bugmaster
2013-08-15 15:06 mkv Status assigned => resolved
2013-08-15 15:06 mkv Status resolved => reviewed
2013-08-15 15:06 mkv Status reviewed => tested
2013-08-17 12:50 bugmaster Changeset attached => occt master b28e7cc6
2013-08-17 12:50 bugmaster Status tested => verified
2013-08-17 12:50 bugmaster Resolution open => fixed
2013-12-19 13:52 bugmaster Status verified => closed
2013-12-19 13:56 bugmaster Fixed in Version => 6.7.0
2015-03-09 19:36 msv Relationship added related to 0025746
2019-03-12 06:55 kgv Relationship added parent of 0030552