Mmemory usage of function in object in c++

Carlis

Senior member
May 19, 2006
237
0
76
Hi

I am implementing a data structure that consists of a large network of nodes with pointers between them. I am memory bound, so I like to reduce the memory footprint.

These nodes are all of the same class. Now, the nodes have some data fields that cost memory.
I consider replacing the fields with some methods to compute the data on the fly.

Now the question is: If I have a single class for the nodes, and add some methods, then clearly they take up some memory. But will I pay this memory for every node?

Best
//
Johan
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
No, the code for the methods of a class or struct exist just once, not for every object you create.
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
FYI, sizeof( classname ) will tell you exactly how big an object is if you want to see the effect of changing the field types or replacing them with functions to compute the value.
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
How large is a "large network"? Are the nodes accessed in a pattern that's somewhat predictable?

If the network is significantly larger than the CPU cache and you're just allocating nodes off of the heap with new, odds are pretty decent that you're causing cache thrashing. It might worth your time to see if you can restructure allocations so there is better locality as you access nodes. This is a fairly hot topic in game design, you can google data oriented game design to find articles and ideas.
 

Cogman

Lifer
Sep 19, 2000
10,278
126
106
I agree with Merad.

Data transmission is a real time sink, if you can avoid it, try limiting the amount and frequency that you put bits on the line. You want to do as much processing locally as possible to get the best utilization of resources.

Further, you get more CPU bang for the buck if you make sure that memory is stored in the same locality. This optimizes CPU cache which can be a big performance boon. More desperate tricks involve specific cache timing instructions, code/data alignment, and SIMD instructions. Go there for getting the most number crunching power you can from your CPU.

You really are going to want to do some memory dumps and analysis. That will give you a good idea of exactly where you are spending your memory. It will give you the best bet for reducing memory usage.

You may also want to use a non-standard allocator like jemalloc. This can help improve allocation speed in multithreaded environments (if that is where you are at).

Finally, you may consider giving a Rust a chance . The language makes strong memory safety guarantees and is just generally written to be fairly memory friendly. I don't know that I could in good faith recommend it if this is a super serious mission critical sort of a thing. But for minor/toy projects or even semi serious stuff, it isn't a bad choice.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |