Вопрос № 131319: Возможно ли отключить в Word функцию создания
временных файлов? В решаемой задаче из LabVIEW
происходит запись данных в Word с
применением технологии ActiveX. Функция Save
отрабатывается после каждой операции
помещения данных ...Вопрос № 131342: Программа на VB6 делает аназиз текстовой информации.
Имеется два массива слов (до 100 000 элементов в каждом)
Нужно выбрать из первого массива только те слова, которые НЕ встречаются во втором массиве. Используемый мною тупой алгоритм сравнен...
Вопрос № 131.319
Возможно ли отключить в Word функцию создания
временных файлов? В решаемой задаче из LabVIEW
происходит запись данных в Word с
применением технологии ActiveX. Функция Save
отрабатывается после каждой операции
помещения данных в Word. В результате за 1
минуту может быть создано огромное
количество временных файлов.
Спасибо
Программа на VB6 делает аназиз текстовой информации.
Имеется два массива слов (до 100 000 элементов в каждом)
Нужно выбрать из первого массива только те слова, которые НЕ встречаются во втором массиве. Используемый мною тупой алгоритм сравнения всех со всеми выдает результат через несколько часов. Мне подсказали, что при использовании SQL-запроса это можно делать за считаные секунды. Поэтому два вопроса:
1. Как массив "преобразовать" в базу данных
2. как правильно написать SQL-запрос в данной ситуации.
Отправлен: 09.04.2008, 14:53
Вопрос задал: Perkussi (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: HookEst
Здравствуйте, Perkussi!
а почему "при использовании SQL-запроса это можно делать за считаные секунды"?
потому что в DB мы можем создать индексное поле и осуществлять поиск по нему(а без индекса и через SQL - это будет также "тупой алгоритм сравнения всех со всеми "). А что такое индекс? это какое-то упорядочивание данных. Так мы и без DB можем отсортировать массивы, а поиск по сортированным массивам и вручную будет делом "считанных секунд".
Я не стал использовать DB(если Евгений Алексеевич сделает, было бы очень интересно сравнить), а предлагаю свои два метода фильтрации. первый с помощью сортировки, а второй с использованием, уже ставшего мне любимым)), Collection.
в приложении, небольшой тестик для сравнения этих методов
для 100 000 слов(каждое слово длиной 10 букв)
метод с сортировкой занял ~ 9.2 сек, из которых 8,5 сек ушло на сортровку, все остальное на фильтрацию
а метод с использование Collection занял ~2.3 сек.
т.к. слова я формировал случайным образом(всего из нескольких различных символов, чтобы хоть какието совпадения находились), код не оптимизировал, и готовил сразу 2 массива с результатом(в первом все значения из первого массива, которые есть во втором массиве, а во втором - те значения которых нет во втором массиве), то конечно результаты очень примерные, но все же не несколько часов.
а может напутал чего))
Успехов.
Приложение:
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 11.04.2008, 13:11 Оценка за ответ: 4 Комментарий оценки: Очень подробный ответ. Пример с анализом скорости выполнения. Возможно так даже лучше будет работать, но вопрос был про базы данных и SQL-запрос....
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Perkussi!
Я проверил утверждение "за считаные секунды...при использовании SQL-запроса"
Подключил к базе данных два сгенерированых текстовых файла, в каждом по 100000 строк, создал запрос (его конструкция в приложении).
я Вас огорчу, открывался запрос 35 секунд, а это не идет в сравнение с вариантом предложенным HookEst.
С помощью его конструкции я проверил время при выполнении задачи с использованием рекордсета, результат значительно лучше чем с использованием SQL:
Creating Recordset:
5032 ms
Sorting Recordset:
971 ms
Removing from Recordset:
1913 ms
Count Record: 75360
Result Array:
1 ms
Result Time:
7920 ms
Решать Вам, но при таком количестве записей я бы не отдавал предпочтение SQL.
Евгений.
Приложение:
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 12.04.2008, 13:28 Оценка за ответ: 5 Комментарий оценки: Исчерпывающий ответ на поставленные вопросы. Приведен сравнительный анализ методов. P.S. а в программе я всё-же уже реализовал метод, предложенный HotEst, за что ему отдельное СПАСИБО!