Я знаю, что при вызове асинхронных методов поток выделяется из пула, и это имеет свою стоимость.
XmlReader имеет асинхронные реализации:
using (var r = XmlReader.Create(fs, new XmlReaderSettings() { Async = true }))
{
while (await r.ReadAsync())
{
if (r.IsStartElement())
{
switch (r.Name)
{
case "a": var a = await r.ReadElementContentAsStringAsync(); break;
case "b": var b = await r.ReadElementContentAsStringAsync(); break;
case "c": var c = await r.ReadElementContentAsStringAsync(); break;
}
}
}
}
Не будет ли трата обработки выделять потоки в пуле для выполнения процесса, такого же простого, как чтение элемента xml?
Я полагаю, что асинхронное чтение в xml следует использовать только тогда, когда известно, что содержимое тега является большим, например строки в base64 и т. Д.
Код выше написан синхронно, не будет ли производительность? Конечно, чтение около 5000 XML-файлов или одного большого XML-файла.