Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 754
от 14.04.2008, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 285, Экспертов: 38
В номере:Вопросов: 2, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 131319: Возможно ли отключить в Word функцию создания временных файлов? В решаемой задаче из LabVIEW происходит запись данных в Word с применением технологии ActiveX. Функция Save отрабатывается после каждой операции помещения данных ...
Вопрос № 131342: Программа на VB6 делает аназиз текстовой информации. Имеется два массива слов (до 100 000 элементов в каждом) Нужно выбрать из первого массива только те слова, которые НЕ встречаются во втором массиве. Используемый мною тупой алгоритм сравнен...

Вопрос № 131.319
Возможно ли отключить в Word функцию создания
временных файлов? В решаемой задаче из LabVIEW
происходит запись данных в Word с
применением технологии ActiveX. Функция Save
отрабатывается после каждой операции
помещения данных в Word. В результате за 1
минуту может быть создано огромное
количество временных файлов.
Спасибо
Отправлен: 09.04.2008, 13:24
Вопрос задал: Sergeichenko Aleksey (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Черников Игорь Владимирович
Здравствуйте, Sergeichenko Aleksey!
попробуйте везде поставить False
With Options
.LocalNetworkFile = False
.AllowFastSave = False
.BackgroundSave = True
.CreateBackup = False
.SavePropertiesPrompt = False
.SaveInterval = 10
.SaveNormalPrompt = False
.DisableFeaturesbyDefault = False
End With
With ActiveDocument
.ReadOnlyRecommended = False
.EmbedTrueTypeFonts = False
.SaveFormsData = False
.SaveSubsetFonts = False
.DoNotEmbedSystemFonts = True
.Password = ""
.WritePassword = ""
.DisableFeatures = False
.EmbedSmartTags = False
.SmartTagsAsXMLProps = False
.EmbedLinguisticData = False
End With
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 10-ый класс)
Ответ отправлен: 09.04.2008, 17:01

Отвечает: Архипов Александр Леонидович
Здравствуйте, Sergeichenko Aleksey!
Сервис-Параметры...
Вкладка "Сохранение"
Убираете ненужные галки...
Ответ отправил: Архипов Александр Леонидович (статус: Студент)
Ответ отправлен: 10.04.2008, 06:07


Вопрос № 131.342
Программа на 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, за что ему отдельное СПАСИБО!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное