0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
||||||
1 | ||||||
Ускорить работу программы30.05.2016, 15:12. Показов 1659. Ответов 23
Метки нет Все метки)
(
суть такова, на форме имеется два текст бокса и кнопка, в первый текст бокс вводится набор букв, во второй цифра, которая будет означать количество букв в слове, далее набор букв из первого текст бокса разбивается на отдельные символы и заполняется в массив, после чего из них генерируются слова, так вот этот код работает быстро к примеру на 3-4 символа (как в моем коде, скинутом для примера), вчера поставил генерацию из 12 символов, по 5 букв в слове так он залип на минут 15, мой вопрос таков: можно ли ускорить работу моего кода, или оптимизировать как то, или даже заменить что то, так как я может вообще использую "деревянный метод" так как программированием давно не занимался, и второй под вопрос, можно ли отсеивать не существующие слова сразу, Application.CheckSpelling - пропускает много не нужных слов.
пример моего кода на генерацию 3 слова из трех букв:
может я плохо объяснил суть вопроса, в общем это генератор слов из заданных букв, буквы вводятся в первый текст бокс, а во второй вводится цифра, означающая количество букв в слове, после чего буквы из первого текст бокса заполняются в массив отдельными символами, а дальше с помощью вложенных циклов эти отдельные элементы массива присоединяются друг к другу во всех возможных комбинациях, и выводятся в ячейку таблицы Excel, я скинул фрагмент кода в котором генерация слова идет из трех букв, можно ли реализовать эту задачу другим способом, так как мой способ затрачивает много времени.
0
|
30.05.2016, 15:12 | |
Ответы с готовыми решениями:
23
Завершить работу программы обработав событие form_unload Как продолжить работу программы после включения компьютера? Ускорить работу программы Ускорить работу программы |
31.05.2016, 09:57 | 2 |
РусланМухмадови
Не берусь судить обо всем вашем коде. Но... 1. Вы используете переменную str. Однако есть функция с этим именем Str(). Использование такой переменной вполне может тормозить работу программы (Не советую далее так делать) 2. Вы объявили переменную razmer как Integer. Это вы так думаете? На самом деле эта переменная имеет тип Variant. Это один из самых медленных типов переменных. Каждую переменную надо объявлять Персонально!! Интересно, вы используете опцию Option Explicit? Советую использовать в каждой программе и объявлять все переменные. 3. Вы используете в Цикле (!!) такую переменную Application.CheckSpelling(slovo) (!!) - Вот еще причина медленной работы вашей программы возможно в десятки раз! Такие вещи надо сокращать и в явном виде не использовать. Просто введите иную (короткую) переменную и передайте ей функцию использованной вами составной переменной.
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
31.05.2016, 13:53 [ТС] | 3 |
geh, а можно 3 пункт немного подробней? и большучее спасибо за рассмотрение моего вопроса, я приму во внимание все ваши замечания.
Добавлено через 1 час 47 минут а все, понял и третий пункт, благодарю. а отсеивание не существующих слов возможно? как то через словарь экселя например...
0
|
31.05.2016, 15:28 | 4 |
РусланМухмадови
Отсеивание конечно возможно. Я бы поставил фильтр. Правда мне не известно что у вас за слова. Насчет Экселя сказать ничего не могу - я с ним не работаю. приложение 1. Самый быстрый тип данных это Long 2. На втором месте Integer. Этот тип является частью Long и работает медленнее за счет того что происходит постоянная конвертация integer-long-integer. Потом идут другие целочисленные типы, далее Double, Single, .... 3. Наконец Variant 4. И это не все. Ну например Text1.Text. Такие вещи надо сразу присваивать реальным переменным. Они работают гораздо быстрее приведенного примера. Большие потери в скорости особенно заметны в цикле.
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
||||||
01.06.2016, 07:35 [ТС] | 5 | |||||
geh, о каком фильтре идет речь? его нужно будет самому создать? или есть какие то средства проверки в самом VB?
вот мой фрагмент кода, этот блок кода работает если во второй текст бокс вести цифру 3, в других блоках код будет аналогичен, просто увеличится вложенность цикла в зависимости от количества букв в слове. [
0
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
01.06.2016, 08:43 [ТС] | 7 |
geh, его нужно самому написать? или же есть какая та функция?
0
|
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
01.06.2016, 08:47 | 8 |
РусланМухмадови, Вам нужно зайти с другого конца.
Зачем перебирать огромное количество бессмысленных сочетаний символов, если в конечном итоге все равно на выходе получаются слова, присутствующие в каком-то словаре? Найдите подходящий Вам словарь и ищите в нем слова, подходящие под Ваши условия.
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
01.06.2016, 08:52 [ТС] | 10 |
SoftIce, а если в этих словарях нет нужного слова? пусть лучше будет фильтр с несуществующими словами, и проверять по нему, пусть он даже что то и пропустит левое, но уж точно не уберет "возможно нужное слово"
0
|
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
||||||
01.06.2016, 09:15 | 12 | |||||
Весь код
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
01.06.2016, 10:02 [ТС] | 13 |
SoftIce, а где сам процесс составления слов из букв? с какого образца он ведет сверку в словаре?
0
|
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
01.06.2016, 11:04 | 14 |
Слова не составляются.
Берем из словаря слово по порядку. Если его длина соответствует заданной, то проверяем по буквам. Если какой-то буквы нет в заданном наборе символов, то переходим к следующему слову, иначе добавляем его на лист Excel. Для проверки я взял словарь из 15000 слов. Код отрабатывает практически "мгновенно" ( ![]() Есть же словари и побольше ![]()
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
01.06.2016, 14:19 [ТС] | 15 |
SoftIce да не плохой вариант, значит нужно искать хороший словарь со всеми существующими словами.. И конечно же спасибо, за советы и замечания, попробую и с Вашим примером что - ни будь сотворить.
Добавлено через 1 час 12 минут Хотя вот, все таки тоже есть над чем подумать... мне ведь нужно что бы если в наборе букв к примеру "пор", слово "поп" не выходило, ведь в наборе букв только одна буква "п"
0
|
02.06.2016, 11:44 | 17 | |||||
Как и просил Руслан
анаграмма или анаграмма с остатком неиспользованных букв.
1
|
02.06.2016, 13:11 | 18 | |||||
Предыдущий пост неверный.
Отдавался приоритет буквам в начале слова, хотя при заданном слове из 8 букв в новом слове из пяти букв может быть ни одной из первых 3 букв заданного слова.
АРГОН ГНОМА ГОМАР ГОМОН ГОНОР ГОРНО ГРОНА МАНГО МАНОР МАРГО МАРОН МНОГО МОГАР МОНГО МОНРО МОРГА НОРМА ОМОНА ОНАГР ОРГАН ОРОНА РОМАН Некоторых слов я не знаю, слова с сайта http://poiskslov.com/
1
|
0 / 0 / 0
Регистрация: 30.05.2016
Сообщений: 10
|
|
02.06.2016, 13:18 [ТС] | 19 |
KoGG, о, спасибо Вам за помощь.. буду разбираться, совмещать все советы и предложения.. слабоват я, что то в этом деле, для генерации слов решил использовать циклы, хотя со словарями конечно быстрее
0
|
02.06.2016, 16:32 | 20 | |||||
![]() Решение
Собственно генератор без словарей.
(есть объект словарь , но это другое, использован вместо коллекции для исключения дубликации слов, так как например слово аргон может генерироваться из слова агроном 2 раза, используя "о" с 4-ой позиции и с 7 позиции слова агроном). За счет использования рекурсии и выбора только из оставшихся букв достаточно быстрый.
2
|
02.06.2016, 16:32 | |
02.06.2016, 16:32 | |
Помогаю со студенческими работами здесь
20
Нужно ускорить работу программы Ускорить работу программы с Excel Как ускорить работу программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
|||||
Интеграция Arduino и ChatGPT: Практическое руководство
InfoMaster 16.01.2025
В современную эпоху технологических инноваций интеграция искусственного интеллекта с микроконтроллерами открывает принципиально новые возможности для создания умных устройств и автоматизированных. . .
|
Как создать робота, управляемого ChatGPT
InfoMaster 16.01.2025
Концепция проекта
В современную эпоху искусственный интеллект и робототехника становятся все более доступными для энтузиастов и разработчиков. Создание роботизированной руки, управляемой ChatGPT,. . .
|
Как создать ChatGPT бота в Telegram на Python
InfoMaster 16.01.2025
В современном мире технологии искусственного интеллекта становятся все более доступными для разработчиков, открывая новые возможности для создания умных и интерактивных приложений. Одним из самых. . .
|
Машинное обучение с помощью Python
InfoMaster 16.01.2025
Машинное обучение стало неотъемлемой частью современных технологий, позволяя компьютерам учиться на основе данных и принимать решения без явного программирования. В сочетании с языком. . .
|
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP
В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
|
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
|
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
|
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
|
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
|
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
|
Параллельное программирование: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование
Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
|
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|