|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Victor Ichalov miltorg То есть вы делали задание под себя, а не по заданию? Вообще, я отвечал на вопрос "Как оптимизировать скорость?": "Вам лучше всего будет переписать perl скрипт ... Но это сложно написать без рабочего тестового стенда." (т.е. без реалистичных данных которые разложены в таблицы со структурой, требуемой скриптом) Что касается "Могу предложить решение чисто на MySQL ...", то я его сделал для кросс-проверки что из тестовых данных действительно получается требуемое, оно выглядело подходящим, поэтому я его опубликовал именно чтобы можно было свериться с другими решениями, найти причины расхождений, если они есть. Я тут вижу проблему скорее в том что по тестовым примерам не очевидно что требуется найти также совпадения подпоследовательностей с разрывами и в общей массе написанного также сложно найти где это требование явно указано. (Кстати, оно точно нужно заказчику? Я в биоинформатике не очень разбираюсь, но уже оптимизировал что-то подобное и там вроде нужно было сравнивать только непрерывные последовательности. ) Похоже что я опять остался без решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:35 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
подождем новых /клиентов/ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:37 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton Я не против хадупа. Я его использовал в AWS. Просто решение для Андрея надо упростить так чтобы он мог хотя-бы это standalone запустить на любой тачке где установлена JRE. Скопировать и запустить шелл или бат-скриптик. я в курсе. потому и положил 3.7 мб папку с заглушкой от хадупа. jar файл, 3.7 мб папка от хадупа и батник. ну и jre нужно. все, больше ничего не требуется. mayton Почему должно быть 66 ? потому что из 12 символов можно построить 66 хромосом диной 10 символов. потратьте уже 2 минуты на изучение правильного ответа https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332994&msg=22276120 Alex_Ustinov это по miltorg1.txt и есть, хотите проверьте проверил, там уже нет тех 66, что были miltoirg.txt. милторг собственно для этого и сделал miltorg1.txt, что бы нельзя было генерить перестановки, не заглядывая в инпут файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:39 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Victor Ichalov, Я вполне нормально решал эту задачу частями. Но я упёрся в то, что мне нужно сравнить каждую строку с каждой просто получить количество совпадений и сами совпадения. И на Перл это занимало очень много времени - неделю. У вас случайно нет решения этого на mySQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:40 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov mayton, комбинации по 10 из 12 = 12!/(12-10)!*10! = 66 и там 5 строк совпадений 3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12 нумерация у меня с 1 по файлу miltorg.txt Во первых это не комбинации а сочетания. Формула n! / (n - k)! * k! это подтверждает. Или если вы взяли перевод английского термина permutation (перестановки/комбинации) - то надо тогда добавить что это permutation with repetitions. В задаче Андрона-Милторга я создаю кластер как только есть более чем 1 хромосома имеющая более чем 10 совпадающих полей. Вот и вся суть моего алгоритма. Попарное сравнение всех. По поводу той магической пятёрки которая там используется. Код: sql 1.
Надо актуализировать. По новому файлу miltbase1.txt Код: sql 1. 2. 3. 4.
Есть только 3 хромосомы содержащие то вхождение. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:44 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
H5N1 mayton Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих модулей системы. У меня - просто процедура main. И интегрироваться там несчем. странновастые мягко говоря у вас представления. ладно, я утомился. топик в какой-то чат малолеток превратился. я говорю на этот вход должно быть 66 строк выхода, ноль внимания. вот мой джарник, собранный на java 15 и фолдер с заглушкой от хадупа. как запустить видно в bat файле. вывод параметризован - или в вашем стиле или тот что хотел miltorg. https://filebin.net/tngol6xocmvfzm7l/app1.zip?t=k7k0oin1 по мне так надо нормальный пример генерить, где и 19 совпадений встретиться могут, ну и инпут побольше, хотя бы 10к, ведь если пару раз в день строка добавляется ... Спасибо. 47МБ - многовато для "простенького задания" - как все тут говорили месяц назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:47 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Это полное решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:50 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
H5N1 проверил, там уже нет тех 66, что были miltoirg.txt. милторг собственно для этого и сделал miltorg1.txt, что бы нельзя было генерить перестановки, не заглядывая в инпут файл. причем здесь сгенерить там не халтура, там ответ по miltorg1.txt ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 15:53 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton, во-первых, я не понял, о чем вы. Не надо меня учить как что называется. Сочетания - подраздел комбинаций, конкретно перестановок авторЕсть только 3 хромосомы содержащие то вхождение. какое "то" вхождение. Автор изменил задание. Как можно результат из прошлого анализировать по новым данным. ЗАДАЧА1 - miltorg.txt3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12 ЗАДАЧА2 - miltorg1.txt (другой набор)3332-3333-3334-3338 4 3 5 7 9 11 17 20 22 23 24 зачем показывать знание grep это здесь не надо. вхождение 10 чисел может быть с "дырками внутри", если так понятнее какие ХРОМОСОМЫ?)) это Лотерейные билеты! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:06 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton В задаче Андрона-Милторга я создаю кластер как только есть более чем 1 хромосома имеющая более чем 10 совпадающих полей. Вот и вся суть моего алгоритма. Попарное сравнение всех. а мне не понятна суть. что бы создать кластер, нужно знать что это совпадение. т.е. надо в памяти иметь Hash структуру, куда заносятся абсолютно все получаемые из хромосом кластера. но 5к инпут файл дает миллиад кластеров, сомневаюсь что Hash в памяти такое поместиться. так что я пока не понимаю сути идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:07 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
H5N1, автордает миллиад кластероввот с этого начиналась первая тема автора... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:09 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov вхождение 10 чисел может быть с "дырками внутри", если так понятнее Приведите пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:25 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
H5N1 но 5к инпут файл дает миллиад кластеров, сомневаюсь что Hash в памяти такое поместиться. так что я пока не понимаю сути идеи. Но это-же глупо правда? Дело даже не в том что миллиард поместистя или нет. А будет ли эта структура полезна для поиска или избыточна. Я - как dba - думаю о поисковыз структурах. Зачем нам все сочетания компонентов кластера если есть корневая компонента которая в себя просто включает всех детей? Нам достаточно просто найти какой сет кластеров включает ... ээ нужное сочетание цифр и мы выйдем быстро на ... эээ лотерейные билетики-хромосомы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:38 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton, я не думал, что вы еще не врубились вычеркиваем по 2 цифры для ОТВЕТА Alex_Ustinov miltorg, к чему этот цирк? получено решение из 12 чисел циклуйте вычеркивая по 2 числа ИЗ 12 получите 12!/(12-10)!10! = 66 комбинаций 1 2 3 4 5 6 7 8 9 10 11 12 авторПриведите хоть пару десятков. вот 6 строк Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 16:41 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Так. Нашел еще один баг с нумерацией. Я рапортую о хромосомах-лотерейных-билетах в нумерации с 0 как принято в Java. А в топике насколько я понял приводится нумерация с 1 как основа для тестирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:13 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
я заливаю исходные данные в табл с автоинкрементом. Поэтоиу у меня с 1 . В любом случае +-1 для сверки найти можно, это не суть ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:16 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg У вас случайно нет решения этого на mySQL ? Ну я думаю его можно сделать, например чтобы сравнить скорость MySQL с hadoop на этой задаче. Одна из проблем заключается в том что оно тоже может будет исполняться слишком долго и таким образом нельзя будет показать что оно вообще работает (с другой стороны, вряд ли больше нескольких часов для подпоследовательностей длиной 9). И SQL очень непрактичен для таких вещей: 1. Даже переделать мои запросы чтобы они принимали и пробел и подчёркивание в качестве разделителей уже проблема 2. Как-то сигнализировать, что встретились входные данные больше 20 элементов - тоже 3. Если у perl кончится память, то он просто остановится - тоже неприятно, но хотя бы можно заметить. А MySQL вероятно молча продолжит выполнение, только намного медленнее. Просмотрел сейчас топик "Как отсортировать 1 миллиард записей?" :) Может вам вообще лучше вернуться к тому решению когда была эта большая таблица в которой надо было найти дубликаты (для этого её не обязательно сортировать). C помощью group_concat() и group by ... having count(*) > 1 как в моих запросах. Проблема в том что для этого требуется память. Если бы там было мало различных значений - то памяти нужно немного. А если там почти все записи - разные, то их все желательно разместить в памяти чтобы была максимальная скорость поиска дупликатов. Память для этого в MySQL выделяется примерно так: Код: sql 1. 2.
64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:19 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Victor Ichalov, нормально работает и с 2-3G буфера без MEMORY (нормально по сравнению с несколькими сутками у автора) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:28 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Victor Ichalov 64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам). Да дело не в гигабайтах. Эта задача похожа на тестовое задание после собеса. Но оно - с хитринкой. С намёком на комбинаторный взрыв. И в таких задачах обычно идеи перебрать всё. Или всё брутфорсить - это неправильные идеи. Да они сработают для 10 из 12. Но что мы будем делать при удвоении исходных данных в разрядности? Просто докупить памяти - уже не вариант. Достигнем пределов Бреммермана? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:29 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
"Простенькая задачка" перешла в разряд нерешаемых... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:41 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton, так это всегда в конечном счете будет "перебор каких-то значений" (не пойму зачем вставлять непонятные словени типа БРУТФОРС) любой SELECT INSERT UPDATE - перебор ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:46 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg "Простенькая задачка" перешла в разряд нерешаемых... зацикловать ответ : Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:49 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
вы что? Не решили задачу даже для первого прохода? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:52 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton Но что мы будем делать при удвоении исходных данных в разрядности? Ну это сильно зависит от данных. Если у них грубо говоря энтропия низкая (много повторений одних и тех же значений) - то всё и прекрасно пройдёт. А если, например, менеджер может потом подсунуть этой же программе хаотические данные чтобы показать что она тормозит и не работает - то что тут сделаешь? mayton всё брутфорсить - это неправильные идеи Вообще, есть конечно идея как это всё ускорить. Но да, пока не будет большей определённости и меньшей загадочности зачем это всё нужно и какая природа у входных данных, пожалуй забью её проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 17:56 |
|
|
start [/forum/topic.php?fid=47&msg=40042863&tid=1828188]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 280ms |
0 / 0 |