dadreamer wrote: Enable-Disable Buttons.vi
во внутреннем цикле незачем перебирать все значения, лучше остановиться, как только искомая строка найдена.
С полгода назад возникла у меня задача в проекте реализовать некий внутренний поиск по большим объёмам данных. Например, есть массив кластеров [имя элемента - его параметры]. И мне нужен элемент определённого имени. Если в лоб, то это перебор в цикле, что довольно долго.
В том проекте данных довольно много, поэтому я остановился на варианте SQLite, живущего в памяти, но тогда же открыл для себя мощь типа Variant.
В нём есть неограниченное количество атрибутов любого типа, чем и можно лихо воспользоваться.
Почитав этот пост, озадачился тестом.
И вот что получается
сам исходник
результат для 130 батонов.
variant имеет микроскопическое время доступа, никак не зависящее от индекса. В то же время, чем дольше от начала массива элемент, тем дольше его поиск.
тогда стало любопытно, если элементов сотни (в этом тесте 800)?
но т.к. доступ к свойствам контролов жрёт гигантское количество ресурсов я задал разное количество повторов.
Итог: время доступа к свойствам variant не зависит от количества этих свойств, а вот при переборе зависимость очевидна.
Не спорю, пример экзотический, 800 контролов вряд ли кто-то размещает (хотя, сколько кнопок-труб-цифровых индикаторов было в том проекте на каждом экране, я не считал). Да и при переборе через свойство больше ресурсов уходит на получение самого ресурса, чем на сравнение, но всё же.
И если уж тестировать, то до конца.
Вот тесты, не зависящие от доступа к UI. В массиве 1000 элементов. поиск последних на 3 порядка дольше, чем извлечение оных из Variant