[Mono-dev] [PATCH] Fold a + 'b' + c to a + "b" + c in mcs

Ben Maurer bmaurer at ximian.com
Tue Oct 11 03:12:44 EDT 2005


On Tue, 2005-10-11 at 03:06 -0400, Ben Maurer wrote:
> On Tue, 2005-10-11 at 07:59 +0100, Marek Safar wrote:
> > Hello Ben,
> > 
> > >Today I noticed a perf issue in corlib in a place where we did a + 'b' +
> > >c. The constant char in this case needs to be boxed and a string
> > >allocated for its value. A better way to write this is a + "b" + c,
> > >which saves two allocations.
> > >  
> > >
> > Good idea, so why not extend this to all other constant cases like. "a" 
> > + 1 + "c" etc.
> 
> ToString there is culture dependent, for char it is not.

One thing we could do here, if you have:
	int i;
	string a, b;

	string c = a + i + b;

We encode it as:
	c = String.Concat (a, (object) i, b)

This requires boxing i. It would be better to say:
	c = String.Concat (a, i.ToString (), b);

We avoid the boxing in this case. But it's 3 am now, maybe I'll make
that patch tomorrow :-).

-- Ben




More information about the Mono-devel-list mailing list