|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
crutchmaster, А вы напишите алгоритм решения - от начала и до конца. Может и правда у вас что-то гениальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 11:34 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Сейчас уже ищем 9 цифр! Мой алгоритм: В исходном файле находим количество совпадений строго больше 8(9 чисел или больше) и формируем БД: Строка совпадений (9 чисел или больше. Больше 15 - нет), строки совпадений из исходного файла, количество совпадений (9 или больше) = кол-ву чисел в первом столбце. Получили БД в которой совпали 2 строки. У меня эта БД заняла около 600 тысяч строк. Второй проход - делаем тоже самое что и в первом этапе но сравниваем строки с количеством совпадений больше 9(10 чисел или больше) с строками которые содержат номер этой строки в совпадении. Пока всё. Я здесь завис. ------------- Этот же подход я использовал и для 10 цифр . Там всё решилось очень быстро. За сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 11:50 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:09 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Предположительно... желтым маркером я выделил строчку которая может быть бутылочным горлом. Чтобы точно-точно убедится - нужно запускать скрипт под профайлером . Как это на Perl делается я не знаю - но вот в стековере есть инфа https://stackoverflow.com/questions/4371714/how-do-i-profile-my-perl-programs Если подтверждается - то надо оптимизировать inserts в MySQL. Тут есть два пути. Первое - подобрать такой table-engine чтоб был максимально шустр на вставку а на остальное плевать. Возможно MyISAM. Второе - делать вставку пачками (batch или bulk по разному это называется). Пример пачковой вставки. Код: sql 1.
Размер пачки должен быть не большой-не-маленький а какая-то золотая середина между скоростью конкатенации Perl-строки (тут возможно пригодится какой-то аппендер) и скоростью обработки. Возможно имеет смысл разбить Perl программу на 2 потока. Чтоб первый 50% обработал и второй еще половину. Так пачковая вставка еще ускорится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:34 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg А вы напишите алгоритм решения - от начала и до конца. Это дело безблагодарное. Код нужен вам, а не мне. Возможность реализации уже была доказана ранее в закрытом треде. Если интересно, бесплатно отвечу на любые вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:41 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton Пример пачковой вставки. Там есть ограничение на длину вставляемого. Если надо очень много лучше тупо загнать в csv а потом сделать дамп средствами mysql. Ну и ему смысла нет ничего тащить в базу, задача полностью влазит в память даже на ноде. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:50 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg, а зачем идем по нарастающему? искали >8 (9 и более) затем ищем >9 (10 и более) ... ну дошли до крайнего =13 и что это дает? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:09 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
crutchmaster mayton Пример пачковой вставки. Там есть ограничение на длину вставляемого. Если надо очень много лучше тупо загнать в csv а потом сделать дамп средствами mysql. Ну и ему смысла нет ничего тащить в базу, задача полностью влазит в память даже на ноде. В родительском топике я тоже предлагал грузить утилитами из CSV. Это кстати - самый быстрый вариант почти для всех бд (Oracle, MSSQL e.t.c.). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:33 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Наоборот. Из 15 чисел-совпадений при втором прогоне остаётся только 9 чисел совпадений в 3 строках. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:37 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg, тяжело воспринимать противоречивую информацию авторВ исходном файле находим количество совпадений строго больше 8(9 чисел или больше) и формируем БД: Строка совпадений (9 чисел или больше. Больше 15 - нет), строки совпадений из исходного файла, количество совпадений (9 или больше) = кол-ву чисел в первом столбце. Получили БД в которой совпали 2 строки. У меня эта БД заняла около 600 тысяч строк. Второй проход - делаем тоже самое что и в первом этапе но сравниваем строки с количеством совпадений больше 9(10 чисел или больше) с строками которые содержат номер этой строки в совпадении. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:45 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
mayton, Давайте разговаривать алгоритмами - ведь написать алгоритм - это совсем не сложно и занимает - десяток строк. Сразу скажу - файл в 600 тысяч строк мне не нравится. А в моём алгоритме есть 600 тысяч строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:46 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
если задача из 14страничного опуса не изменилась, то алгоритм прост ищем все наборы с числом совпадений > N, допустим >8 получили все все все - и 9 и 10 и 11 и т.д, допустим 13 это макс 9 -> в ответ из 10 делаем комбинации по 9 и -> в ответ из 11 делаем комбинации по 9 и -> в ответ ..... из 13 делаем комбинации по 9 и -> в ответ это все, таблица строк в которых совпадают 9 чисел - готова ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:51 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg mayton, Давайте разговаривать алгоритмами - ведь написать алгоритм - это совсем не сложно и занимает - десяток строк. Сразу скажу - файл в 600 тысяч строк мне не нравится. А в моём алгоритме есть 600 тысяч строк. Сделай профилирование. Просто так за ништяк никто не захочет глубоко погружаться в твой алгоритм. Покажи где узкое место в реализации и потом мы пойдем в алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:53 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Что вы не поняли? Вы понимаете что совпадений при первом прогоне может быть например 15 чисел? 1_2_3_4_5_6_7_8_9_10_11_12_13_14_15 есть в строках 1, 5 А где то есть строка: 1_2_3_4_5_6_7_8_9 есть в строках 5, 500 ---------------- Таблица при втором прогоне: 1_2_3_4_5_6_7_8_9 есть в строках 1, 5, 500 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:55 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Это Мой первый алгоритм. Из первой темы. Теперь попробуйте привести 15 совпадений к 9 Там сразу начинают ходить таблицы по 15 миллионов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 13:58 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg, Нет смысла сравнивать всё со всеми - достаточно сравнивать только совпавшие - отсюда получился мой 2 алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:00 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg, я не предлагал сравнивать все со всем в данном случае. если у нас совпало 15 чисел, то как не крути - в них совпадут и комбинации 9 чисел из этих 15-ти. Поэтому и надо построить комбинации 9 из 15 и записать в ответ (ничего не сравнивая, просто построить эти наборы) никаких 15 млн не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:03 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg Alex_Ustinov, Это Мой первый алгоритм. Из первой темы. Теперь попробуйте привести 15 совпадений к 9 Там сразу начинают ходить таблицы по 15 миллионов. В этих 15 миллионных таблицах есть дубликаты - точно есть - я делал таким способом. - То есть дубликаты нужно убирать. Таблицы совмещать и пр. ужас. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:06 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Я вас попросил составить количество строк из 15 совпадений. Как вы не поймёте я всё эту уже делал и отказался от этого. А если вы предлагаете сравнивать не со всеми подряд, а только с совпавшими - получаем мой алгоритм который работает сейчас. Ведь он просто сейчас берёт 10 совпадений и ищет новые строки среди уже ранее совпавших. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:11 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
в прошлом топике не зря предлагали упростить задачу. Только для того чтобы ее можно было "нарисовать" на пальцах. Допустим есть наборы из 6 чисел 1,2,3,4,8,9 1,2,3,4,6,7 Задача Ищем совпадения 3 чисел нашли в строках совпадения >2: это из 4-х чисел 1,2,3,4 то и 3 из 4-х тоже будут совпадать, строим эти наборы 1,2,3 1,2,4 1,3,4 2,3,4 это ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:11 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Потом тоже самое проделывает с 11 совпадениями. Точнее 11 совпадений я уже сделал - всего то за сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:13 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
miltorg, опять пятница? НАЧАЛОНужно получить совпадения по 9 чисел. Например ТЕПЕРЬЯ вас попросил составить количество строк из 15 совпадений. я не вижу в вашем алгоритме построение наборов в искомом найденном наборе. Я вижу сравнение массивов ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:16 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
покажите где у вас строится комбинации 9 из 15-ти или 9 из 13 НЕ надо ничего сравнивать. Чисто построение Или все таки топик надо переносить в форум Perl ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:18 |
|
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Добавьте строки чтоб они были без совпадений Добавьте строки с разным количеством совпадений - тогда это будет походе на прототип. А сейчас это похоже на натянутое за уши задание под ваше неверное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 14:20 |
|
|
start [/forum/topic.php?fid=47&msg=40040861&tid=1828188]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 278ms |
0 / 0 |