Enhancement #706
Improve Memory Layout and Allocation of MathVector
Status: | Resolved | Start date: | 11/09/2011 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | M. Rolf | % Done: | 100% | |
Category: | - | |||
Target version: | NemoMath 0.4 |
Description
Explore memory layout without several layers of pointers, but store
everything (refCount,size,data) in one memory block. Compare std::string
implementation.
- Faster allocation/deallocation
- Faster dereferencing
- Smaller memory footprint (in particular for small vectors)
- Maybe better caching behavior (memory that's used together belongs together!)
Drawbacks:
very ugly!
History
#1 Updated by M. Rolf almost 12 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 40
#2 Updated by M. Rolf almost 12 years ago
Benchmark results for first implementation:
Benchsuite [MathVectorCreate] Performing each case 10000000 times with operation-size 10 Benchcase [MathVectorCreate:Create] Operations per second: 9.71064e+06 Benchcase [MathVectorCreate:CreateCopyModify] Operations per second: 4.81884e+06
Compared to previous implementation:
Benchsuite [MathVectorCreate] Performing each case 10000000 times with operation-size 10 Benchcase [MathVectorCreate:Create] Operations per second: 5.36829e+06 Benchcase [MathVectorCreate:CreateCopyModify] Operations per second: 2.64776e+06
Compared to Eigen2:
Benchsuite [MathVectorCreate] Performing each case 10000000 times with operation-size 10 Benchcase [MathVectorCreate:Create:Eigen] Operations per second: 9.52886e+06 Benchcase [MathVectorCreate:CreateCopyModify:Eigen] Operations per second: 3.77345e+06
#3 Updated by M. Rolf almost 12 years ago
- % Done changed from 40 to 60
#4 Updated by M. Rolf over 11 years ago
- % Done changed from 60 to 80
#5 Updated by M. Rolf over 11 years ago
- Status changed from In Progress to Resolved
- % Done changed from 80 to 100