The question as what the title says, static functions? or functions of an object that is deleted right away?
I know that in a real situation the difference is completely unnoticable but i would still like to know which is more efficient in saving memory. I really don’t mind the overhead given by the “new” and “delete” command.
MyClass::staticFunction();
or…
myObject = new MyClass;
myObject->normalFunction();
delete myObject;
edit: the second code might as well be MyClass().normalFunction(); silly…
there are a few things to consider here;
- there will only be one instance of the myObject, and it is only used ONCE in the application.
- after usage, it is deleted right away because it is not needed.
- one would ask, why is this even in a class? why not just put the function where it is used with temporary variables? the answer is encapsulation and readability. i do believe static functions use the same resources as global functions since in fact, they really are global functions that enjoy class scope. the only reason i have to put it in it’s own class is to make my code more readable, and encapsulation.
As it stands, none of this makes any sense. The real solution would be to provide a free function (a function at namespace scope), because this is what free functions are there for.
Oh, and since you asked: If calling this one single function has noticeable overhead in your code, then you will only find out about it through careful profiling. Profiling is also what would answer your question which way is faster.
But first make sure your code is easy to read and well maintainable. Optimizing this then will be much easier than fixing prematurely micro-“optimized” code. The only early optimizations you should employ are those that result in optimal data structures and algorithms.
(Note that
newanddeletewill very likely have far greater overhead than what the function actually does, let alone calling it.)