Enhancement #706

Improve Memory Layout and Allocation of MathVector

Added by M. Rolf over 12 years ago. Updated over 11 years ago.

Status:ResolvedStart date:11/09/2011
Priority:NormalDue 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.

Possible benefits (?):
  • 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

Also available in: Atom PDF