|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
||||||
Оптимизация кода. Или, как сделать более легкую программу?03.04.2013, 04:51. Показов 3106. Ответов 35
Метки нет (Все метки)
День добрый товарищи. Имею программу, которая берет из файла текст, ищет в нем определенный кусок текста "g 9999999" и сравнивает его со вторым таким же куском, если нашлось совпадение, она сравнивает с 3 таким куском текста такого же типажа, и с 4-ым. Если находит нужное количество совпадений во всех 4-х, то сохраняет в массив для дальнейшего использования. Программа то работает, и очень облегчает мне труд, который я в принципе сделать не смогу, но при загрузке больших файлов, более 300 штук комбинаций, программа просто зависает и затрачивает времени для обработки довольна долго, для таких простейших операций. Если кому не сложно, гляньте код, возможно я наделал чего лишнего или что то можно написать по другому. Товарищей с критикой не имеющей хотя бы 1 бит информации, прошу даже не пытаться писать. Спасибо.
0
|
||||||
| 03.04.2013, 04:51 | |
|
Ответы с готовыми решениями:
35
Оптимизация кода, структуры базы, или что еще можно сделать что бы быстрее работало!? Оптимизация кода запроса, или как обойтись без запроса? Как можно сделать программу более компактнее |
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 29.07.2013, 17:52 [ТС] | |
|
0
|
|
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
| 29.07.2013, 17:56 | |
|
Я забыл добавить, что при желании можешь менять количество сравнений динамически. Например через значение, заданное в Edit. Вставляешь 2 значения в строку 126 моего последнего кода вместо 16-ок.
0
|
|
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 29.07.2013, 21:02 [ТС] | |
|
проверил полностью.
Если ввожу что мне нужно, 3-ое совпадение в числах 123**** , то начинает искать бесконечное число комбинаций. дошло уже до 300 000 комбинаций, а процесс бар всего в 5%.
0
|
|
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
||
| 29.07.2013, 21:40 | ||
|
Ты сейчас говоришь о совпадении 3-х цифр в 16-ти комбинациях?
Выложи кусочек из результата. Несколько строк. Добавлено через 18 минут Кажется, догадываюсь. Изменение процесс бара идёт по индексу просмотра первого уровня, а там ещё 15 уровней перебираются. Я обращал внимание, что если там подходящих комбинаций 1000, например, то будут выданы все варианты комбинаций по 16 из 1000. Тебе, наверное, нужно как-то условие поиска изменить. Или объяснить конкретно, что ты хочешь делать. Я тогда переделаю. Добавлено через 7 минут У тебя там промелькнула фраза:
Не по теме: И, кажется, ты забыл, что нужно обновлять страницу.
0
|
||
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 29.07.2013, 22:39 [ТС] | |
|
Насчет удаления строк, мы кажется уже решили этот вопрос.
Обьясню на пальцах: нужно чтобы все работало как и раньше, но в замен 3 или 4 , которые ты помог мне уже сделать, мне теперь нужно чтобы он искал 16х комбинаций с одинаковыми цифрами. А количество цифр я хочу задавать сам. В принципе программа ищет на 4-е совпадения в строках, но если поставить 3, то уходит , на мой взгляд, в бесконечный цикл. Потому что из 3-ех тысяч строк, она умудряется найти более 300 000 комбинаций, что в принципе невозможно. еще заметил, что при 16-ти одинаковых строках, она выдаст 16 комбинаций одинаковых.
0
|
|
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
| 29.07.2013, 22:58 | |
|
Всё равно мне не всё понятно. Например у тебя есть 18 комбиначий цифр у которых совпадают, например искомые 3. Если удалять из поиска те, которые уже найдены. Тогда будет найдена последовательность из 16-ти комбинаций, эти 16 комбинаций удаляются, а оставшиеся 2 - остаются не при делах. Так и должно быть?
А насчёт 300 000 комбинаций из 3000 строк. Так я объяснял, что программа фактически составляет сочетания из найденных по 16. Я из исходного файла удалял комбинации, которые уже выданы в OutGos. Но не удалял их из поиска. Именно по той причине, о которой написал выше. И из твоей фразы насчёт удаления строк, я понял, что они должны удаляться именно из исходного файла, а не из поиска. 4-х совпадений гораздо меньше, поэтому сочетаний меньше - выборка быстрее.
0
|
|
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 30.07.2013, 01:09 [ТС] | |
|
я думаю, лучше будет как ты написал, чтобы 2 оставались ни при делах. а 16 удалялись из поиска.
0
|
|
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
| 30.07.2013, 07:19 | |
|
Я уже запутался со всеми разновидностями. В результате тебе нужны полные строки со всеми данными или только выбранные 16 комбинаций?
g 3547384; g 5648345; g 3045328; g 1641362; и т.д.
0
|
|
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 30.07.2013, 13:37 [ТС] | |
|
полные
Добавлено через 19 минут т.е. вывод мне нужен такой g 3334567;123456-|-g 3335678;123456-|-g 3336789;123456-|- и так далее еще 13 раз..
0
|
|
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
||||||
| 30.07.2013, 15:17 | ||||||
|
Вы меня конечно великодушно прости те но на C# данная задача решается не в пример легче
![]()
Ниже прикрепляю проект и отдельно exe файл, если у вас Windows Vista/7 то он должен запуститься без проблем если же не она то скорее всего вам придется поставить .Net Framework 3.0
0
|
||||||
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
|
| 30.07.2013, 15:24 | |
|
5 минут на правку истекли поэтому выкладываю отдельным сообщением результат работы программы, сравнение идет по первым 3 символам
0
|
|
| 30.07.2013, 15:31 | |
|
Не по теме: агерон, а чегой-то вы в наш монастырь? кадилом давно не получали? :) холивары в другом разделе а тут человеку надо было оптимизировать код в среде делфи, а не переделать на си...
0
|
|
| 30.07.2013, 15:39 | |
|
Не по теме: Так- то оно так, и C# слабо относиться к Delphi :(, несмотря на то что C# разрабатывали знатоки Оберона, если не ошибаюсь :-D, просто человеку нужен был результат - быстрая обработка его файла, и кажется по срокам на "вчера" вот я и подсобил на C# :). На счет Delphi сильно не пинайте я последнею на нем программу писал под Delphi7 и это было давно и не правда :)
0
|
|
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
||||||
| 30.07.2013, 19:48 | ||||||
|
агерон, Я в Си не понимаю - не могу оценить код и проверить алгоритм. Но по условию задачи нужно искать в этих числовых комбинациях совпадение (допустим 3-х) символов в соответствующих позициях. Не обязательно первых. И группировать допустим, тройками (на сегодня по 16).
Пример: g 3547384; g 3187287; g 3567585; Добавлено через 2 часа 9 минут Вот: Кликните здесь для просмотра всего текста
1
|
||||||
|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
|
| 30.07.2013, 22:13 [ТС] | |
|
работает! отлично!. спасибо большое.
0
|
|
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
|
| 31.07.2013, 00:15 | |
|
простите спал
, но для твоей задачи отлично подойдет битовая маска + TDictionary<longint, TStringList>если тебе еще нужно то я изменю свою программу под твои условия
0
|
|
| 31.07.2013, 00:15 | |
|
Как сделать данную программу более эффективной? Оператор Goto или оптимизация кода Как редактировать таблицу из кода или сделать привязку? Как сделать так, что бы программа не работала когда вводишь одно или более двух слов на Java Разделение кода на две или более пользовательских функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|