Final makes no difference?

BCS BCS at pathlink.com
Thu Aug 24 09:16:29 PDT 2006


John Demme wrote:
> BCS wrote:
> 
> 
>>John Demme wrote:
>>
>>>I'm working on fixing and optimizing my XML parser.  It uses some
>>>classes, and lots of virtual method calls, so I figured I could really
>>>increase my
>>>speed by making everything final.  I made the classes final, and I put
>>>all of the methods in a big final{} block, but it made no appreciable
>>>difference in my time trials.
>>>
>>>Am I doing something wrong?  Does DMD currently not optimize for final? 
>>>Or are virtual method calls not nearly as bad as I thought? I'm making a
>>>ton of calls into small functions, so I was also hoping final methods
>>>would be candidates for inlining...
>>>
>>>I'm using DMD 0.163 and compiling with -O and -inline.
>>>
>>>Thanks
>>
>>if you aren't using inheritance, try using structs.
> 
> 
> Yeah, I know... I'm probably going to switch several of the classes over to
> structs, but the big main class implements an interface.  I don't
> absolultely need the speed right now- I'm just wondering if any changes
> will be made in the future, and if I'm expecting the right thing from
> final.
> 

That brings up another bone of mine. why can't struct implement an 
interface? For that matter why not a function?



interface Foo
{
	char fig(int);
	int bar(char);
}

void fun()
{
	char[] cmap;
	int[] imap;

	char first(int i){return cmap[i];}
	int second(char c){return imap[c];}


	Foo f = interface : Foo	// making up a syntax...
		{
			alias first fig;
			alias second bar;
		}

	FnTakingFoo(f);
}



More information about the Digitalmars-d-bugs mailing list