XmlReader Async VS Sinc - PullRequest
       8

XmlReader Async VS Sinc

0 голосов
/ 20 января 2019

Я знаю, что при вызове асинхронных методов поток выделяется из пула, и это имеет свою стоимость.

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-файла.

...