У меня есть интересная проблема с несколькими различными способами ее решения. Я создаю страницу отчетов для небольшого инструмента, который берет результаты команд, запущенных из командной строки, и разбивает сводную информацию на более удобные для чтения таблицы.
Мой код начинается с запуска cmd и фильтрации некоторого ввода. Я запускаю это в Windows, поэтому он использует поиск вместо grep.
Вот пример нескольких строк, которые я могу получить из команды, каждая строка возвращается как элемент в массиве:
Client client1 2011/06/16 root /appl/now 'area1: info'
Client client2 2011/06/16 root /appl/now 'area2: adds'
Client client3 2011/06/16 root /appl/now 'area3: text'
Client client4 2011/06/16 root /appl/now 'area4: text'
Client client5 2011/06/16 root /appl/now 'area3: text'
Client client6 2011/06/16 root /appl/now 'area3: adds'
Client client7 2011/06/16 root /appl/now 'area1: info'
Что мне нужно сделать, это взять каждую строку из вышеприведенного вывода и сгруппировать их на основе записи area<#>
. Каждая уникальная строка (info
, adds
и т. Д.) Является таблицей, и каждая запись, имеющая это значение, имеет еще один запуск cmd, и выходные данные сохраняются в таблице. Так что для вышеприведенного вывода у меня будет 4 таблицы; area1
будет иметь 2 записи, area2
будет иметь 1 запись, area3
будет иметь 3 записи, а area4
будет иметь 1 запись.
Эти значения хранятся в базе данных, поэтому я могу сделать оператор select, чтобы получить их, а затем сравнить их с моим исходным массивом или выполнить цикл по массиву и сохранить каждое уникальное значение в другом массиве. Первый вариант кажется быстрее, когда у меня очень большой набор данных, а второй вариант кажется быстрее, когда у меня маленький набор данных. Какой путь быстрее? Есть ли лучший способ, о котором я не думал?
Теперь, чтобы сравнить массив всех значений с массивом уникальных значений, чтобы сгруппировать их в отдельные таблицы, какой самый быстрый способ? Я в настоящее время перебираю, и если значение соответствует уникальному значению, я добавляю этот элемент в таблицу. Это делается с помощью вложенных циклов foreach, что не очень эффективно. Есть предложения?