Выполнение запроса XElement LINQ для атрибута или элемента - PullRequest
1 голос
/ 15 июля 2010

Я использую LINQ to XML для поиска в приведенном ниже XML-коде (небольшой раздел окончательного документа), первоначально в attibute Название страны, и мне было интересно, будет ли какое-либо преимущество в производительности при создании имени как дочернего элемента, а не атрибута

<Countries>
    <Country name="United Kingdom">
        <Grades>
            <Grade>PA</Grade>
            <Grade>FE</Grade>
        </Grades>
    </Country>
</Countries>

Спасибо

1 Ответ

1 голос
/ 15 июля 2010

С точки зрения времени обработки LINQ разница должна быть очень очень мала, это зависит от формы документа. Если вы ищете атрибут для элемента со многими атрибутами, он будет медленнее, поэтому, если вы знаете, что у вас будет только один атрибут, который вы ищете, он будет быстрым. То же самое касается элементов. Таким образом, если приведенный выше пример является представительным, то чем быстрее будет атрибут, тем более, что будет только один атрибут, но будет два элемента, если вы переместили имя в элемент. Второе соображение, которое, вероятно, является более важным, - это разбор скорости. Сначала вам нужно будет разобрать документ, чтобы можно было найти его. Скорость разбора зависит в основном от количества символов, которые он должен обработать. Таким образом, чем длиннее входной документ (в байтах), тем больше времени потребуется для его анализа. В этом смысле атрибуты немного короче элементов (обычно). Кроме того, бухгалтерия, которую должен выполнять синтаксический анализатор, немного меньше для атрибутов, чем для элементов (особенно если у вас есть только один атрибут для элемента). Но, как и в случае с производительностью: измерьте это. Это окончательный ответ.

...