, Очевидно, что даже больше места можно сэкономить, используя знания о последнем плохом персонаже.
ользую программу чтения XML-текста в файле XML, который может содержать символы, которые недопустимы для программы чтения. Первоначально я думал о том, чтобы создать собственную версию потокового ридера и очистить плохие символы, но это сильно замедляет мою программу.
public class ClensingStream : StreamReader
{
private static char[] badChars = { '\x00', '\x09', '\x0A', '\x10' };
//snip
public override int Read(char[] buffer, int index, int count)
{
var tmp = base.Read(buffer, index, count);
for (int i = 0; i < buffer.Length; ++i)
{
//check the element in the buffer to see if it is one of the bad characters.
if(badChars.Contains(buffer[i]))
buffer[i] = ' ';
}
return tmp;
}
}
согласно моему профилировщику код тратит 88% своего времени наif(badChars.Contains(buffer[i]))
Как правильно сделать это, чтобы я не вызывала ужасную медлительность?