WinForms. TreeView - лучший способ отфильтровать узлы

Один конкретный сценарий, где C++ все еще имеет власть (и будет, в течение многих последующих лет) происходит, когда полиморфные решения могут быть предопределены во время компиляции.

Обычно инкапсуляция и задержанное принятие решений являются хорошей вещью, потому что это делает код более динамичным, легче адаптироваться к изменяющимся требованиям и легче использовать в качестве платформы. Поэтому объектно-ориентированное программирование в C# очень продуктивно, и это может быть обобщено в термин “generalization”. К сожалению, этот конкретный вид обобщения прибывает в стоимость во времени выполнения.

Обычно, эта стоимость является несущественной, но существуют приложения, где издержки виртуальных вызовов метода и создания объекта могут иметь значение (тем более, что виртуальные методы предотвращают другую оптимизацию, такую как встраивание вызова метода). Это - то, где C++ имеет огромное преимущество, потому что можно использовать шаблоны для достижения другого вида обобщения, которое имеет никакой влияние на время выполнения, но является не обязательно любым менее полиморфным, чем ООП. На самом деле все механизмы, которые составляют ООП, могут быть смоделированы с помощью, только обрабатывают по шаблону разрешение времени компиляции и методы.

В таких случаях (и по общему признанию, они часто ограничиваются специальными проблемными областями), C++ выигрывает у C# и сопоставимых языков.

9
задан Murat from Daminion Software 20 January 2014 в 23:23
поделиться

1 ответ

Если вы ищете максимальную производительность, клонируйте дерево, затем удалите все элементы из клонированного дерева, а затем просто замените существующее дерево клонированным (и отфильтрованным).

Я также держу дерево поддержки, которое всегда не фильтруется.

Это хорошо работает для меня для довольно больших деревьев с 1000 - 2000 узлов.

10
ответ дан 3 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: