|
2 / 2 / 0
Регистрация: 01.04.2013
Сообщений: 46
|
||||||
Оптимизация кода. Или, как сделать более легкую программу?03.04.2013, 04:51. Показов 3038. Ответов 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 Разделение кода на две или более пользовательских функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|