[Mono-devel-list] streamwriter fixes

Ben Maurer bmaurer at users.sourceforge.net
Mon Aug 18 22:47:34 EDT 2003


On Mon, 2003-08-18 at 12:39, Paolo Molaro wrote:
> I had these fixes in my tree for a few months, but I can't say
> I have tested them much. This should get the writer classes closer to
> the documentation (which says only Write(char) must be implemented by a
> subclass, previous code had Wrute(char[]) as the required method to
> implement in a derived class) and it may give a small speedup, since
> decoding is done in largers buffers at a time.
> Please test and review.
> 
> lupus

Actually, in XmlTextWriter, this patch helps out alot with memory
allocation.

One other speedup we can do is to not call .ToCharArray () in
WriteString:

		public override void Write (string value) {
			if (DisposedAlready)
				throw new ObjectDisposedException("StreamWriter");

			int index = 0, count = value.Length;
			
			while (count > 0) {
				int todo = decode_buf.Length - decode_pos;
				if (todo == 0) {
					Decode ();
					todo = decode_buf.Length;
				}
				if (todo > count)
					todo = count;
				value.CopyTo (index, decode_buf, decode_pos, todo);
				count -= todo;
				index += todo;
				decode_pos += todo;
			}
			
			if (iflush)
				Flush ();
		}

That saves us a char [] for each call.

-- Ben




More information about the Mono-devel-list mailing list