Inline classes

N

neelagain

Hi,

Perhaps this question needs to be in Visual Studio forum, but, I think
it must be applicable to general C++ programming as well.

I have an inline class. In case this is only visual studio
terminology, by that I mean I have a class which has ALL the functions
inline (no member variables) and I have not included that class in
project (it's 500 lines long and expected to grow to 600 - although I
don't think line numbers shouldn't matter that much). But, there are
classes which are using the object of this class.

To know what's the difference between when I am using this class and
when I am not, I measured obj file size with and without this class
usage (see below).

What I wanted to know is, at what point it becomes intolerable to have
inline classes? I suppose, it must depend on compiler as well but I
thought I should ask if there is a general guiding principal when I
should _stop_ using this approach.

Note: File 1 & 2 are the ones that are using object of this class
(different methods call in each file).

Debug

File 1 File 2
----------
---------
With class usage/inclusion 299 KB 343 KB
Without class usage/inclusion 247 KB 296 KB
------------------------------------------------------------------------
Difference 52 KB 47 KB

Release
File 1 File 2
----------
 
J

Jim Langston

Hi,

Perhaps this question needs to be in Visual Studio forum, but, I think
it must be applicable to general C++ programming as well.

I have an inline class. In case this is only visual studio
terminology, by that I mean I have a class which has ALL the functions
inline (no member variables) and I have not included that class in
project (it's 500 lines long and expected to grow to 600 - although I
don't think line numbers shouldn't matter that much). But, there are
classes which are using the object of this class.

To know what's the difference between when I am using this class and
when I am not, I measured obj file size with and without this class
usage (see below).

What I wanted to know is, at what point it becomes intolerable to have
inline classes? I suppose, it must depend on compiler as well but I
thought I should ask if there is a general guiding principal when I
should _stop_ using this approach.

Note: File 1 & 2 are the ones that are using object of this class
(different methods call in each file).

Debug

File 1 File 2
----------
---------
With class usage/inclusion 299 KB 343 KB
Without class usage/inclusion 247 KB 296 KB
------------------------------------------------------------------------
Difference 52 KB 47 KB

Release
File 1 File 2
----------
---------
With class usage/inclusion 277 KB 299 KB
Without class usage/inclusion 231 KB 259 KB
------------------------------------------------------------------------
Difference 46 KB 40 KB

Thanks,
Neel.

Unfortunately, this question really can't be answered because the answer is:
it depends. What does it depend on? Does the saving of having the
functions inlined offset the increased file size of the executable. If the
exe file size plus memory usage is great enough to cause excessive page
swapping then the program will run slower as it waits for hard drive
read/writes as the executable memory pages are swapped out to disk. For an
incresae of 53KB it is hard to say. Only testing would tell.
 
N

neelagain

Unfortunately, this question really can't be answered because the answer is:
it depends.  What does it depend on?  Does the saving of having the
functions inlined offset the increased file size of the executable.  If the
exe file size plus memory usage is great enough to cause excessive page
swapping then the program will run slower as it waits for hard drive
read/writes as the executable memory pages are swapped out to disk.  For an
incresae of 53KB it is hard to say.  Only testing would tell.

--
Jim Langston
(e-mail address removed)- Hide quoted text -

- Show quoted text -

Hi Jim,

Thanks for the reply. The same difference in object does not translate
to increase in size for executable (dll) - I missed calculating that
first time. Does that somehow changes the equation? Of course in the
end all will depend on performance/storage required AND senior team
member :) . But, is the difference in the file size given below
somehow makes it acceptable _in general scenario_?


Debug

File 1 Dll Size
------- ---------
With class usage/inclusion 404 KB 2092 KB
Without class usage/inclusion 247 KB 2096 KB
---------------------------------------------------
Difference 157 KB 4 KB

Release
File 1 Dll Size
------ --------
With class usage/inclusion 361 KB 1128 KB
Without class usage/inclusion 231 KB 1124 KB
 
J

Jim Langston

Hi Jim,

Thanks for the reply. The same difference in object does not translate
to increase in size for executable (dll) - I missed calculating that
first time. Does that somehow changes the equation? Of course in the
end all will depend on performance/storage required AND senior team
member :) . But, is the difference in the file size given below
somehow makes it acceptable _in general scenario_?


Debug

File 1 Dll Size
------- ---------
With class usage/inclusion 404 KB 2092 KB
Without class usage/inclusion 247 KB 2096 KB
---------------------------------------------------
Difference 157 KB 4 KB

Release
File 1 Dll Size
------ --------
With class usage/inclusion 361 KB 1128 KB
Without class usage/inclusion 231 KB 1124 KB

Doesn't matter if it's 50K increase, 100K increase or 1000MB increase. You
have to test. There is no answer for you other than test and see. And even
then, it may run faster on one computer with inlining, faster on another
computer without inlining (physical memory available, hard drive speed,
memory available for program executation, etc..).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top