powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
471 сообщений из 471, показаны все 19 страниц
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040357
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?

Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
require "./baza.pl";

$tab1 = 'n9n1';

$tab2 = 'n9n2';



$dbh->do("SET autocommit=0");



$s = "SELECT * FROM $tab1 where sovpalo=10";
$sth = $dbh->prepare($s);
$sth->execute;



   
while (@r = $sth->fetchrow_array){
  
  @a = split /_/, $r[1];

  print "$r[0]\n";


  $s2 = "SELECT * FROM $tab1 where str1=$r[5] or str2=$r[5]";
  $sth2 = $dbh->prepare($s2);
  $sth2->execute;
  while (@r2 = $sth2->fetchrow_array){
    next if $r2[0] <= $r[0];
    
    
    @b = (); %isect = (); %inion = ();



    @b = split /_/, $r2[1];

    #print @a;print "\n";
    #print @b;print "\n";


    for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}

    @isect = keys %isect;

    $is = scalar(@isect);

    if($is > 8){
      $r = join('_', sort {$a<=>$b} @isect );
      
      $dbh->do("INSERT INTO $tab2 VALUES (null, '$r', '$r[4]-$r[5]-$r2[4]-$r2[5]', $is)");

    }
    
    #print "$r2[0]\n";
     

    }
  }

$dbh->do("COMMIT");
   

$sth->finish;
$sth2->finish;
$dbh->disconnect;
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040358
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
+----+---------------------------------+----------+-----------+------+------+---------+
| id | d1                              | myData1  | myData2   | str1 | str2 | sovpalo |
+----+---------------------------------+----------+-----------+------+------+---------+
|  1 | 5_7_8_27_39_50_58_62_70         | 2.1.2012 | 8.1.2012  |    0 |    6 |       9 |
|  2 | 8_22_23_34_37_43_50_55_57       | 2.1.2012 | 5.2.2012  |    0 |   34 |       9 |
|  3 | 5_15_27_34_37_39_40_57_62_70    | 2.1.2012 | 20.2.2012 |    0 |   49 |      10 |
|  4 | 5_8_15_22_27_37_43_58_70        | 2.1.2012 | 7.3.2012  |    0 |   65 |       9 |
|  5 | 8_22_23_27_39_40_44_50_55_57    | 2.1.2012 | 9.3.2012  |    0 |   67 |      10 |
|  6 | 5_7_8_27_37_39_40_58_62         | 2.1.2012 | 27.3.2012 |    0 |   85 |       9 |
|  7 | 15_23_34_37_40_41_43_44_58      | 2.1.2012 | 8.4.2012  |    0 |   97 |       9 |
|  8 | 7_8_23_27_34_41_57_58_70        | 2.1.2012 | 10.4.2012 |    0 |   99 |       9 |
|  9 | 15_22_34_37_40_41_43_55_57      | 2.1.2012 | 11.4.2012 |    0 |  100 |       9 |
| 10 | 5_15_22_23_39_43_44_50_55_57_62 | 2.1.2012 | 16.5.2012 |    0 |  135 |      11 |
+----+---------------------------------+----------+-----------+------+------+---------+
10 rows in set (0.22 sec)



В таблице около миллиона записей.

Спасибо.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040359
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто то не читал предыдущею тему:

Есть файл - в каждой строке 20 чисел, через пробел, от 1 до 99 включительно.
Около 5 тысяч строк.

Нужно получить совпадения по 9 чисел. Например

5_7_8_27_39_50_58_62_70 - комбинация есть в 5 строках - в 1, 28, 1004, 4300, 4444,
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040494
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
увеличивать буфер, начать с 2G
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040522
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

А по русски? :-)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040528
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

таблицы InnoDB? (99% да)
в файле конфигурации
в my.ini (или my.cnf если Линукс)
поставить параметр
Код: sql
1.
2.
[mysqld]
innodb_buffer_pool_size = 2G 

перезапустить сервер
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040554
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov>
У него "миллиард записей"б там наверное РАМы как минимум 10ки Гб, а он сейчас 2Гб поставит :) Диверсия!!!! ))

Если можете, как рекомендуется, 70% от всей РАМы ставьте.

Я так понял, у вас какой-то там алгоритм, вы можете по тестить его на n записей, потом n*10, n* 100 и посмотреть как растет время поиска, может в алгоритме что-то не то.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040558
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще, долго не вдаваясь в вашу проблему, можно писать 20ть чисел в 20ть колонок и включать по ним текстовой поиск.
Просто как идея.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040567
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fitter2,

у меня уже есть опыт общения с miltorg.
ничего не говорится о таблицах, алгоритме и т.д.
смотрим контекст
miltorgВ таблице около миллиона записей.
среди "простыни" на PHP я вижу один запрос на MySQL
SELECT * FROM $tab1 where str1=$r[5] or str2=$r[5]

поэтому отвечаю по запросу в стиле ТС

и сравнение (или не сравнение, кто его знает) у него в двух циклах, нет там JOIN-а миллиардного.
фетч из одной таблицы подставляется в фетч другого запроса
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040586
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и смотреть надо завершение стадии гораздо выше до
$dbh->do("COMMIT");
чтобы понять на чем висит .....2 дня...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040587
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov>
Это у него уже вторая лента, в первой начиналось словами "миллиард" :)
Ваша позиция мне понятна. Я так, постёбываюсь :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040598
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Не висит. Работает. Но в таблице 600 тысяч с лишним строк.

И практически каждую нужно сравнить с каждой и получить количество совпадений и записать в новую таблицу.

В первой таблице - 2 совпадения строк, а в второй таблице - уже 3 совпадения.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040617
thomas-gatry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой тип таблиц?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040624
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,


Есть SELECT (пусть 600тыс)
Есть одиночные Insert

Что пытаемся оптимизировать - 2 этажный цикл + INSERT?

Можно поставить COMMIT этажом выше, фиксировать порциями. и соответственно использовать INSERT IGNORE на случай сбоя-остановки
сейчас я так понимаю 600тыщ*600тыщ коммитится?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040671
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
исходный текстовый файл в 5000+ строк есть смысл вообще привести в более компактный и удобный вид
на дату выделить 2 байта = 0..65535 дней, итого хватает на 179 лет

числа от 1 до 99 в строчке не повторяются, можно представить, как последовательность из 99 битов
если бит выключен - соответственного числа в строчке нет, если включен - есть
это 13 байт

итого, с датой, всего 15 байт на хранение строчки, 75кб+ размер обрабатываемого файла

чтобы сравнить 2 любые строки, перебираем 13 байт каждой, делая побитную операцию & (and) с таким же байтом другой строки
если в итоге какой-то бит включен, значит число, за которое отвечает этот бит, присутствует в обеих строчках

чтобы быстро считать, сколько всего чисел совпало, можно забацать спец-табличку/массив для 256 вариантов байтов, в которой хранить посчитанное число включенных бит для этого конкретного байта

сделали & двух байтов для проверки (узнали какие числа совпали), а по байту-результату через таблицу узнали сколько бит в нем включено и приплюсовали в какую-нибудь переменную для суммы
если сумма = 9 или сколько там надо совпадений, перевели все в нормальный текст и выдали в нужный файл

как-то так :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040710
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...а можно поиграть с файликом 75к, как там еще надо заказчику, например, -
генеришь очередной 13-байтный "ключ" (хоть перебором от 1 до 2^99), в котором включено именно 9 бит из 99
пробегаешь этим ключем по & с каждой строчкой из 5000
совпавшие строки, где все 9 бит включены, направляются в текстовом виде, скажем, во вспомогательный файл
а после подсчета их числа, уже этот весь кусок идет в выходной файл (файлы), сразу сортируясь на нужную позицию по числу строк в куске

как-то так :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040726
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя не, перебирать долго :)
лучше очередной ключ создавать из пар строк, где есть от 9 совпадений :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040743
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...а в рабочем 75к файле (копии), по которому ключами бегать, оставить только строчки, где есть не менее 9 совпадений ;)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040748
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
Немного не так. Первый проход сравнения первоначальной таблицы дал эти самые 600 тысяч совпадений.

Но эти совпадения - почти половина искомые - то есть по 9 чисел

больше 15 чисел совпадений - одна штука
14 чисел - работало 5 мин
13 чисел - 10 мин
12 чисел - около 5 часов
11 чисел - сутки
10 чисел вот теперь - вторые сутки. Вероятно что будет 6 суток.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040751
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не ожидал такого затыка. - Думал что за 2 суток доработает. Ан - нет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040752
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я просто создаю таблицу совпадений по 9 чисел. Даже окончательно не сравнивая их.
Если бы при первом проходе получились только совпадения по 9 цифр - всё, задача решена.
Но получились совпадения и по 10, и по 11, 12, 13, 14,. 15
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040755
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому я и сравниваю с кем ещё совпало 15 совпадений, например. Сколько этих совпадений. И тд.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040790
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну как бы логичный алгоритм

получаем "дерево" и достаточно глубокое
вхождений 10 из 20-ти больше чем 11 из 20 и т.д. поэтому и будет дольше "перебирать".
все равно основная трата времени на "проверке вхождения"
именно поэтому и предлагали перейти на битовые операции.

это Перл?
надо в Перле посмотреть битовые операции и переделать. Это просто быстрее, хочу-не-хочу

еще вариант исследования - прогнать алгоритм без INSERT в базу посмотреть сколько он отработает (с выводом проиежуточных данных после внутр цикла)

далее - INSERT самая долгая операция, это запись на диск. Оптимизация - быстрые диски (опуская COMMIT и т.д.)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040793
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять же - если это Perl, то лучше спросить в профилирующем форуме PHP, Perl, Python
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040796
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Кстати, да. Mysql у тебя находится где? Попорбуй делать или INSERT DELAYED, или поставь автокоммит, или не делай insert в базу, а записывай в файл, потом заливай в бд.

Повторю, что эта задача решается в памяти полностью за секунды, ты занимаешься ерундой.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040814
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

А вы напишите алгоритм решения - от начала и до конца.
Может и правда у вас что-то гениальное.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040822
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас уже ищем 9 цифр!
Мой алгоритм:

В исходном файле находим количество совпадений строго больше 8(9 чисел или больше) и формируем БД:
Строка совпадений (9 чисел или больше. Больше 15 - нет), строки совпадений из исходного файла, количество совпадений (9 или больше) = кол-ву чисел в первом столбце.

Получили БД в которой совпали 2 строки.
У меня эта БД заняла около 600 тысяч строк.

Второй проход - делаем тоже самое что и в первом этапе но сравниваем строки с количеством совпадений больше 9(10 чисел или больше) с строками которые содержат номер этой строки в совпадении.

Пока всё. Я здесь завис.

-------------

Этот же подход я использовал и для 10 цифр . Там всё решилось очень быстро. За сутки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040826
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
require "./baza.pl";  ############# Подключение к БД

$tab1 = 'n9n1';

$tab2 = 'n9n2';



$dbh->do("SET autocommit=0"); ############## Запрос к БД



$s = "SELECT * FROM $tab1 where sovpalo=10"; ################## Ещё запрос
$sth = $dbh->prepare($s);  ###############
$sth->execute;  ############



   
while (@r = $sth->fetchrow_array){ ################### Цикл по запросу
  
  @a = split /_/, $r[1]; ######################### Вытягиваем числа в массив с 1 столбца, не с 0-го! 

  print "$r[0]\n";


  $s2 = "SELECT * FROM $tab1 where str1=$r[5] or str2=$r[5]"; ## Второй запрос внутри первого
  $sth2 = $dbh->prepare($s2); ############Нам интересны только строки в которых упоминается наша строка
  $sth2->execute;
  while (@r2 = $sth2->fetchrow_array){########## Цикл по запросу
    next if $r2[0] <= $r[0];                     ########### Строки только больше строки первого запроса
    
    
    @b = (); %isect = (); %inion = ();  ####### Это и ниже - для сравнения количества совпадений
    @b = split /_/, $r2[1];
    for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}
    @isect = keys %isect;
    $is = scalar(@isect);

    if($is > 8){ ######################## Только если количество совпадений больше или равно 9
      $r = join('_', sort {$a<=>$b} @isect ); ################   Сортировка  
      
      $dbh->do("INSERT INTO $tab2 VALUES (null, '$r', '$r[4]-$r[5]-$r2[4]-$r2[5]', $is)"); ########### запись в новую таблицу

    }
     

    }
  }

$dbh->do("COMMIT");       ############## Запрос к БД. Пишем всё.

   

$sth->finish; ############ Прибираемся и рвём соединение
$sth2->finish;
$dbh->disconnect;
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040833
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
....
while (@r = $sth->fetchrow_array){
  
....
  while (@r2 = $sth2->fetchrow_array){
    next if $r2[0] <= $r[0];       
    @b = (); %isect = (); %inion = ();
    @b = split /_/, $r2[1];
    #print @a;print "\n";
    #print @b;print "\n";
    for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}
    @isect = keys %isect;
    $is = scalar(@isect);
    if($is > 8){
      $r = join('_', sort {$a<=>$b} @isect );      
      $dbh->do("INSERT INTO $tab2 VALUES (null, '$r', '$r[4]-$r[5]-$r2[4]-$r2[5]', $is)");
    }    
    #print "$r2[0]\n";
....



Предположительно... желтым маркером я выделил строчку которая может быть бутылочным горлом.

Чтобы точно-точно убедится - нужно запускать скрипт под профайлером . Как это на Perl делается я не знаю - но
вот в стековере есть инфа https://stackoverflow.com/questions/4371714/how-do-i-profile-my-perl-programs

Если подтверждается - то надо оптимизировать inserts в MySQL. Тут есть два пути. Первое - подобрать
такой table-engine
чтоб был максимально шустр на вставку а на остальное плевать. Возможно MyISAM.

Второе - делать вставку пачками (batch или bulk по разному это называется).

Пример пачковой вставки.

Код: sql
1.
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);



Размер пачки должен быть не большой-не-маленький а какая-то золотая середина между скоростью
конкатенации Perl-строки (тут возможно пригодится какой-то аппендер) и скоростью
обработки.

Возможно имеет смысл разбить Perl программу на 2 потока. Чтоб первый 50% обработал и второй еще половину.
Так пачковая вставка еще ускорится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040837
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
А вы напишите алгоритм решения - от начала и до конца.

Это дело безблагодарное. Код нужен вам, а не мне. Возможность реализации уже была доказана ранее в закрытом треде. Если интересно, бесплатно отвечу на любые вопросы
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040844
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Пример пачковой вставки.

Там есть ограничение на длину вставляемого. Если надо очень много лучше тупо загнать в csv а потом сделать дамп средствами mysql.
Ну и ему смысла нет ничего тащить в базу, задача полностью влазит в память даже на ноде.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040850
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

а зачем идем по нарастающему?
искали >8 (9 и более)
затем ищем >9 (10 и более)
...
ну дошли до крайнего =13
и что это дает?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040858
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Пример пачковой вставки.

Там есть ограничение на длину вставляемого. Если надо очень много лучше тупо загнать в csv а потом сделать дамп средствами mysql.
Ну и ему смысла нет ничего тащить в базу, задача полностью влазит в память даже на ноде.

В родительском топике я тоже предлагал грузить утилитами из CSV. Это кстати - самый быстрый
вариант почти для всех бд (Oracle, MSSQL e.t.c.).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040859
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
Наоборот. Из 15 чисел-совпадений при втором прогоне остаётся только 9 чисел совпадений в 3 строках.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040861
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,
тяжело воспринимать противоречивую информацию
авторВ исходном файле находим количество совпадений строго больше 8(9 чисел или больше) и формируем БД:
Строка совпадений (9 чисел или больше. Больше 15 - нет), строки совпадений из исходного файла, количество совпадений (9 или больше) = кол-ву чисел в первом столбце.

Получили БД в которой совпали 2 строки.
У меня эта БД заняла около 600 тысяч строк.

Второй проход - делаем тоже самое что и в первом этапе но сравниваем строки с количеством совпадений больше 9(10 чисел или больше) с строками которые содержат номер этой строки в совпадении.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040862
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Давайте разговаривать алгоритмами - ведь написать алгоритм - это совсем не сложно и занимает - десяток строк.

Сразу скажу - файл в 600 тысяч строк мне не нравится. А в моём алгоритме есть 600 тысяч строк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040864
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если задача из 14страничного опуса не изменилась, то алгоритм прост
ищем все наборы с числом совпадений > N, допустим >8
получили все все все - и 9 и 10 и 11 и т.д, допустим 13 это макс
9 -> в ответ
из 10 делаем комбинации по 9 и -> в ответ
из 11 делаем комбинации по 9 и -> в ответ
.....
из 13 делаем комбинации по 9 и -> в ответ

это все, таблица строк в которых совпадают 9 чисел - готова
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040866
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

Давайте разговаривать алгоритмами - ведь написать алгоритм - это совсем не сложно и занимает - десяток строк.

Сразу скажу - файл в 600 тысяч строк мне не нравится. А в моём алгоритме есть 600 тысяч строк.


Сделай профилирование. Просто так за ништяк никто не захочет глубоко погружаться в твой алгоритм.
Покажи где узкое место в реализации и потом мы пойдем в алгоритм.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040867
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040868
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
Это Мой первый алгоритм.
Из первой темы.

Теперь попробуйте привести 15 совпадений к 9
Там сразу начинают ходить таблицы по 15 миллионов.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040869
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Нет смысла сравнивать всё со всеми - достаточно сравнивать только совпавшие - отсюда получился мой 2 алгоритм.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040872
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

я не предлагал сравнивать все со всем в данном случае.
если у нас совпало 15 чисел, то как не крути - в них совпадут и комбинации 9 чисел из этих 15-ти. Поэтому и надо построить комбинации 9 из 15 и записать в ответ (ничего не сравнивая, просто построить эти наборы)
никаких 15 млн не будет
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040875
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Alex_Ustinov,
Это Мой первый алгоритм.
Из первой темы.

Теперь попробуйте привести 15 совпадений к 9
Там сразу начинают ходить таблицы по 15 миллионов.


В этих 15 миллионных таблицах есть дубликаты - точно есть - я делал таким способом. - То есть дубликаты нужно убирать.
Таблицы совмещать и пр. ужас.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040877
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Я вас попросил составить количество строк из 15 совпадений.
Как вы не поймёте я всё эту уже делал и отказался от этого.
А если вы предлагаете сравнивать не со всеми подряд, а только с совпавшими - получаем мой алгоритм который работает сейчас.

Ведь он просто сейчас берёт 10 совпадений и ищет новые строки среди уже ранее совпавших.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040878
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в прошлом топике не зря предлагали упростить задачу. Только для того чтобы ее можно было "нарисовать" на пальцах.

Допустим есть наборы из 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

это ответ
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040879
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом тоже самое проделывает с 11 совпадениями.
Точнее 11 совпадений я уже сделал - всего то за сутки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040881
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

опять пятница?
НАЧАЛОНужно получить совпадения по 9 чисел. Например

ТЕПЕРЬЯ вас попросил составить количество строк из 15 совпадений.


я не вижу в вашем алгоритме построение наборов в искомом найденном наборе. Я вижу сравнение массивов
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040883
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажите где у вас строится комбинации 9 из 15-ти
или 9 из 13
НЕ надо ничего сравнивать. Чисто построение
Или все таки топик надо переносить в форум Perl
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040885
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Добавьте строки чтоб они были без совпадений
Добавьте строки с разным количеством совпадений - тогда это будет походе на прототип.
А сейчас это похоже на натянутое за уши задание под ваше неверное решение.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040886
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Запрос построчечно приводится к массиву - вы этого правда не знаете?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040887
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

где неверное?
поясните ваш алгоритм на пальцах на простом примере
Дано
Наборы чисел
1,2,3,4,8,9
1,2,3,4,6,7
Найти вхождения всевозможных комбинаций из 3 чисел
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040888
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете добавить сколько угодно строк без этих чисел, чтобы они не совпадали
притяните за уши ваш алгоритм под ответ 22273238
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040891
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли вслух.
Про первый алгоритм.
Я приводил например 13 совпадений к 12 .
Потом приводил 12 совпадений к 11
Потом 11 совпадений к 10

А вы предлагаете из 13 сразу сделать 10.
А какая разница?

Всё равно надо глянуть - вдруг тут есть хоть какой то выход.
Вдруг всё будет считать быстро и хорошо.
Ок. Я это посмотрю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040896
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

так что мы рассуждаем? у вас нормальный алгоритм.
Только сделать рекурсивную функцию Построение комбинации N-1 чисел из N
для построения 10 из 15 вызывается 14 из 15, потом 13 из 14 и т.д.
Без этого никак проще не сделать. Иначе генерить млрд строк
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040898
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorg,

где неверное?
поясните ваш алгоритм на пальцах на простом примере
Дано
Наборы чисел
1,2,3,4,8,9
1,2,3,4,6,7
Найти вхождения всевозможных комбинаций из 3 чисел


Ну не вхождения нужно искать. Не вхождения.
А строки.
То есть ответ в вашем случае для 2 строк не имеет вообще никакого смысла.
Вы выдумали сами себе задание и сами его решили и радуетесь.

Но задание - найти строки в которых совпало по 9 чисел максимальное количество раз.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040901
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040904
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
покажите где у вас строится комбинации 9 из 15-ти
или 9 из 13
НЕ надо ничего сравнивать. Чисто построение
Или все таки топик надо переносить в форум Perl


Я ведь писал:

22273009
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040906
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

На 2 последних страницах я рассказываю вам элементарные вещи - разговор с вами прекращаю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040925
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой смысл в вашей фразе
авторВы выдумали сами себе задание и сами его решили и радуетесь.
если в результате делаете так же
получается вы не можете переложить ваш алгоритм на простую задачу.
авторТо есть ответ в вашем случае для 2 строк не имеет вообще никакого смысла.
я же описал задачу 22273259
и показал решение и ответ здесь 22273238
Только после этого промежуточного решения вы можете суммировать свои максимальные вхождения.
Иного не дано.
Топик наверное опять надо закрывать. Тем более он совершенно не касается MySQL.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040937
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача решается за часик простеньким map-reduce кодом. мапер читает строку, шлет на редюсер все комбинации по 8, по 9 .. хоть 200 элементов в ключе (шлет строку, ключ - комбинация). редюсер считает кол-во строк прилетевших по ключу, если их больше нужного - пишет в файл ответ.
потом файлы от редюсера уже можно грузить в базу, в базе отсортировать. если машина всего одна и дохлая, запускать с одим мапером и одним редюсером, если памяти гагабайты map-reduce замечательно распараллелит это дело.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1, техники map-reduce предполагают что у тебя не 1 ноутбучек с MySQL, а готовый
и поднятый кластер наподобие AWS-EMR в облаке.

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040967
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
H5N1, техники map-reduce предполагают что у тебя не 1 ноутбучек с MySQL, а готовый
и поднятый кластер наподобие AWS-EMR в облаке.

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.


что за ерудна ? база тошнит от того что пишет гигабайты лишнего в undo, redo, ставит блокировки, занимается каким-то порно с кешированием и еще миллионом совершенно ненужным в этой задаче вещами. map-reduce на ноутбуке дубово и ничего лишнего, потому будет чудовищно эффективно. понятно, что речь о запуске на винде в локальном режиме. кластер нафиг не нужен, пара маперов и редюсоров запросто влезут на ноутбук, обычный ноутбук.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040991
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

опять ваш клиент, заберите его в Программирование,
тем более там уже пыточный топик есть с комбинаторикой
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton
H5N1, техники map-reduce предполагают что у тебя не 1 ноутбучек с MySQL, а готовый
и поднятый кластер наподобие AWS-EMR в облаке.

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.


база тошнит от того что пишет гигабайты лишнего в undo, redo, ставит блокировки, занимается каким-то порно с кешированием и еще миллионом совершенно ненужным в этой задаче вещами.

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

Не?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040995
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

Не?

не. мы говорим про перл скрипт который в одном потоке в цикле долбит инсертом два дня.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

Не?

не. мы говорим про перл скрипт который в одном потоке в цикле долбит инсертом два дня.

Ну да. Он выбрал MySQL. Автомат калашникова нашего времени.

А вы что ему предлагаете? Сериализацию в Avro? Parquet? Orc? Какой вообще
сценарий по шагам ему надо сделать в том случае чтоб задействовать технологии
BigData. Забегая вперед я скажу что знаю ответ на этот вопрос. Но я считаю
что для его уровня подготовки, MySQL с табличкой - это железный вариант
который он хотя-бы сделает. Медленно. Со скрипом но сделает.

Альтернативный сценрий в данном топике мне представляется просто невозможным.

Вот в таком вот аспекте.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040998
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

А вы что ему предлагаете? Сериализацию в Avro? Parquet? Orc? Какой вообще
сценарий по шагам ему надо сделать в том случае чтоб задействовать технологии
BigData. Забегая вперед я скажу что знаю ответ на этот вопрос.

если знаете ответ, странные вопросы задаете

mayton

Но я считаю что для его уровня подготовки, MySQL с табличкой - это железный вариант
который он хотя-бы сделает. Медленно. Со скрипом но сделает.

да без шансов. комбинации из 9 он уже точно не дождется долбя в одном потоке.

с map-reduce никакие паркеты не нужны, маперы читают csv файл, на редюсер соответственно уходит text, выплюнет редюсер тоже csv.
в том же стиле явно можно и на спарк решить эту задачу: считать csv файл в датасет, flatMap() раздует датасет (перемножив строки на комбинации, каждая комбинация станет ключем), reduceByKey() посчитает кол-во строк по ключу. теперь это можно отсортировать и обрезать нужный топ. ну может еще по ключу заджоинить на первый датасет, т.к. в топе будут только топовые ключи/комбинации.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041032
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Альтернативный сценрий в данном топике мне представляется просто невозможным.

Скинуть готовый код, в который он просто введёт данные и выполнит. Иначе этот тупак будет тянутся еще месяц.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041037
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,
1. Спасибо

2. Вы считаете что не имеет смысла искать какие то хитромудрые mySQL запросы? - именно это я ожидал от этой темы. Что кто-то умный напишет запрос который всё сделает внутри mySQL.

3. Вы предлагаете решить всё с помощью map-reduce? А оно точно справиться с 300 000 * 300 000 записей. Ведь проблема именно в этом огромном количестве проверяемых строк.
Именно оно и считает уже почти неделю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041125
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так сколько строк - 600 или 300 тыс?)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041144
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще недоразумение -
miltorgбольше 15 чисел совпадений - одна штукаиз совпадений 15 получаем 14 - это строковая функция путем последовательного вычеркивания чисел, т.е. получим 15 строк - каким алгоритмом это работает так долго?
miltorg14 чисел - работало 5 мин если должно быть 0,5 сек на одну строку МАКСимум в самом убогом случае?
maytonМы-же говорим про запрос Милторга? SELECT ... GROUP BY ...не дошли мы еще до GROUP BY, это еще в зародыше
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041157
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или вот это
автор14 чисел - работало 5 мин
какой то другой замер?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041163
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

map-reduce - запросто. набросал код, 9 цифр в комбинации, данные взял из этой таблички
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332345&msg=22260954

на ноутбуке четыре ядра - 24 секунды и победила одна комбинация
[5, 7, 8, 27, 39, 50, 58, 62, 70] 3

т.е. три строки с такой комбинацией.
верный ответ?

маппер/редюсер
Код: java
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.
public class MiltorgMapper extends Mapper<LongWritable, Text, Text, Text> {
    private static final Logger log = LoggerFactory.getLogger(MiltorgMapper.class);

    @Override
    protected void map(LongWritable key, Text val, Context context) throws IOException, InterruptedException {
        log.info("key: {} val {}", key, val);
        int [] numbers = Stream.of(val.toString().split(";"))
                .mapToInt(Integer::parseInt)
                .toArray();
        Set<Integer> integerSet = Arrays.stream(numbers).boxed().collect(Collectors.toSet());
        TreeSet<Integer> tSetNumbers = new TreeSet<Integer>( integerSet);

        List<Set<Integer>> combinations = generateCombinations(tSetNumbers, 9);
        for (Set<Integer> c: combinations) {
            context.write( new Text(c.toString()), val) ;
        }

    }

    public static List<Set<Integer>> generateCombinations(Set<Integer> from, int size) {
        Set<Set<Integer>> elements = Sets.powerSet(from);
        List<Set<Integer>> possibleCombinations = elements.stream().filter(p -> p.size() == size).collect(Collectors.toList());
        return possibleCombinations;
    }

}

public class MiltorgReducer extends Reducer<Text, Text, Text, Text> {
        private static final Logger log = LoggerFactory.getLogger(MiltorgReducer.class);

        @Override
        protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException,InterruptedException  {
            Integer matches = 0;
            for (Text value :values) {
                matches++;
            }
            if (matches>2) {
                context.write(new Text(key.toString()), new Text(matches.toString()));
            }
    }

}
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041179
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

не похоже даже близко, там 10-ки 3 раза как я помню
5-7-8-15-22-23-27-34-37-39-40
а девяток из этих 10 чисел будет гораздо больше
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041189
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ссылке
5_7_15_22_23_27_34_37_39_40

а вообще 11 чисел совпадает 3 раза
5-7-8-15-22-23-27-34-37-39-40
так что 9-ток там куча (110штук?)
и здесь все жестко (-:) Вид ответа
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041190
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Альтернативный сценрий в данном топике мне представляется просто невозможным.

Скинуть готовый код, в который он просто введёт данные и выполнит. Иначе этот тупак будет тянутся еще месяц.

Чорт! Брателло! Конечно скидывай. Я только рад буду.

Только мы с тобой заключим джентльменское пари на тему того, за сколько времени ТС разберется с
развертыванием этого стека целиком.

Я вангую что Perl/MySQL - быстрее.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041199
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
H5N1,

не похоже даже близко, там 10-ки 3 раза как я помню
5-7-8-15-22-23-27-34-37-39-40
а девяток из этих 10 чисел будет гораздо больше

я не вижу. первая и последняя строка одинаковы, под комбинацию 5-7-8-15-22-23-27-34-37-39-40 попадают. третей не вижу. назовите номер строки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041204
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

выше последняя вводная простыня от ТС упс в предыдущем грозбухе
я так вижу 1-е 21-е и 22-е число даты
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041210
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1я не вижу. первая и последняя строка одинаковы я лишь показал подачу ТС, вопросы к автору
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041215
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov

выше последняя вводная простыня от ТС упс в предыдущем грозбухе
я так вижу 1-е 21-е и 22-е число даты

это здорово, но а я не вижу связи ваших наблюдений с теми данными на которых считал я.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041219
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

я не показывал своих наблюдений. И связей не искал)
я лишь показал результат который уже известен на известных данных
Этот топик исходит из того, "миллиардного". который уже как вечность в этом подфоруме MySQL)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041220
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov

выше последняя вводная простыня от ТС упс в предыдущем грозбухе
я так вижу 1-е 21-е и 22-е число даты

закинул эти данные, если 10 комбинаций то ответ

[5, 7, 15, 22, 23, 27, 34, 37, 39, 40] 3
[5, 7, 8, 15, 22, 23, 27, 34, 37, 39] 3
[5, 7, 8, 15, 22, 23, 27, 34, 37, 40] 3
[5, 7, 8, 15, 22, 23, 27, 34, 39, 40] 3
[5, 7, 8, 15, 23, 27, 34, 37, 39, 40] 3
[5, 7, 8, 22, 23, 27, 34, 37, 39, 40] 3
[5, 7, 8, 15, 22, 23, 27, 37, 39, 40] 3
[5, 7, 8, 15, 22, 23, 34, 37, 39, 40] 3
[5, 7, 8, 15, 22, 27, 34, 37, 39, 40] 3
[5, 8, 15, 22, 23, 27, 34, 37, 39, 40] 3
[7, 8, 15, 22, 23, 27, 34, 37, 39, 40] 3

теперь близко ?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041232
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

да это к автору,
со времен прошлого топика остались алгоритмы, я просто примерно посмотрел что должно быть ~110 штук 3-х кратных вхождений по 9
раскиньте сами 11 по 9

вы искали 10 чисел, тогда 11-ть 3-хкратных совпадений, да
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041314
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Я уже здесь несколько раз написал что нужны номера строк совпадений из исходной таблицы:

[5, 7, 15, 22, 23, 27, 34, 37, 39, 40] есть в строках 1,2,3 - 3 раза
[5, 7, 8, 15, 22, 23, 27, 34, 37, 39] есть в строках 5,7 - 2 раза

-- это просто пример. Не результат.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041321
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Вы первый человек с этого форума который выдал ответ очень близкий к моему.
Тема висит уже около месяца.

Спасибо вам большое - особенно если по вашему алгоритму всё получится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041322
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
H5N1,

Я уже здесь несколько раз написал что нужны номера строк совпадений из исходной таблицы:

[5, 7, 15, 22, 23, 27, 34, 37, 39, 40] есть в строках 1,2,3 - 3 раза
[5, 7, 8, 15, 22, 23, 27, 34, 37, 39] есть в строках 5,7 - 2 раза

-- это просто пример. Не результат.


Это я написал до рассмотрения вашего результата - это можно бы удалить, но оно уже не удаляется.

Ещё раз - спасибо вам.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041419
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя программа закончила считать этой ночью. Я даже не знаю - сколько дней это длилось.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041421
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Тебе еще делать что-то надо? А то мы тут пари собираемся заключить?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041447
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Моя программа закончила считать этой ночью. Я даже не знаю - сколько дней это длилось.

раз добавляются записи это было бесполезно.
мне кажется с подходом map-reduce задачка достаточно просто решается и на перл скриптиках. первый скриптик (мапер) читает строку из входного файла, генерит встретившиеся комбинации, создает файл на файловой системе с именем комбинации, пишет туда строку (столько раз сколько комбинаций в строке), читает следующую стоку ...
втрому скриптику (редюсер) остается лишь сосчитать кол-во строк в каждом файлике и выявить у кого там больше.
в боевых условиях следует чуток соптимизировать - не сваливать все в один фолдер, а создавать вложенные фолдеры из первой цифры, второй цифры комбинации и только там уже файл с именем комбинации. если файл при каждой записи открывать закрывать, наверно можно и в параллель запускать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041469
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Моя программа закончила считать этой ночью. Я даже не знаю - сколько дней это длилось.

Индексы строил? Explain смотрел? Движок на MyIsam менял? (По умолчанию МайСКЛ создает InnoDB).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041471
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

MyIsam не навернётся, когда много данных?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041474
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton,

MyIsam не навернётся, когда много данных?

Почитал здесь https://dev.mysql.com/doc/mysql-reslimits-excerpt/8.0/en/table-size-limit.html

Вроде хватает до 1 миллиарда.

Код: sql
1.
MAX_ROWS=1 000 000 000
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041500
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg
Моя программа закончила считать этой ночью.

Ответ - 42?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041511
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Я ваше решение ещё даже не смотрел.
Я боялся что нажму не ту кнопку и мои недельные мучения-расчёты обнулятся.
Сейчас гляну ваш метод.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041553
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
miltorg,

map-reduce - запросто. набросал код, 9 цифр в комбинации, данные взял из этой таблички
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332345&msg=22260954

на ноутбуке четыре ядра - 24 секунды и победила одна комбинация
[5, 7, 8, 27, 39, 50, 58, 62, 70] 3

т.е. три строки с такой комбинацией.
верный ответ?

маппер/редюсер
Код: java
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.
public class MiltorgMapper extends Mapper<LongWritable, Text, Text, Text> {
    private static final Logger log = LoggerFactory.getLogger(MiltorgMapper.class);

    @Override
    protected void map(LongWritable key, Text val, Context context) throws IOException, InterruptedException {
        log.info("key: {} val {}", key, val);
        int [] numbers = Stream.of(val.toString().split(";"))
                .mapToInt(Integer::parseInt)
                .toArray();
        Set<Integer> integerSet = Arrays.stream(numbers).boxed().collect(Collectors.toSet());
        TreeSet<Integer> tSetNumbers = new TreeSet<Integer>( integerSet);

        List<Set<Integer>> combinations = generateCombinations(tSetNumbers, 9);
        for (Set<Integer> c: combinations) {
            context.write( new Text(c.toString()), val) ;
        }

    }

    public static List<Set<Integer>> generateCombinations(Set<Integer> from, int size) {
        Set<Set<Integer>> elements = Sets.powerSet(from);
        List<Set<Integer>> possibleCombinations = elements.stream().filter(p -> p.size() == size).collect(Collectors.toList());
        return possibleCombinations;
    }

}

public class MiltorgReducer extends Reducer<Text, Text, Text, Text> {
        private static final Logger log = LoggerFactory.getLogger(MiltorgReducer.class);

        @Override
        protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException,InterruptedException  {
            Integer matches = 0;
            for (Text value :values) {
                matches++;
            }
            if (matches>2) {
                context.write(new Text(key.toString()), new Text(matches.toString()));
            }
    }

}



Попытался скомпилировать - выдало кучу ошибок.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041560
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg

Попытался скомпилировать - выдало кучу ошибок.

Это технология Apache Hadoop. https://hadoop.apache.org/
По развертыванию локально можно поискать - но она неэффективна на single node.

Лучше - кластер. И лучше купить его за деньги.

И даже развертывание single node локально - требует определённой сноровки. Вобщем - тут
лучше еще один топик отдельно поднять.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041574
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Упс.
То есть кроме Java мне на компьютер пользователя, удалённо, придётся ставить ещё что-то?
Крутовато. Учитывая то, что простой запуск Перлового скрипта на его компьютере - вызывает массу вопросов.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041577
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg, да. Совершенно верно. Нужна инсталляция hadoop для начала. На Windows машинах
все это ставится плохо. Со скрипом. В основном это связано с несовершенством cmd-shell.
Куча банальностей типа левые-правые слеши, или разделители в CLASSPATH.

Поэтому если уж захотел плотно работать с java/bigdata - то лучше на Linux машине начинать учёбу.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041582
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
miltorg
Моя программа закончила считать этой ночью. Я даже не знаю - сколько дней это длилось.

раз добавляются записи это было бесполезно.
мне кажется с подходом map-reduce задачка достаточно просто решается и на перл скриптиках. первый скриптик (мапер) читает строку из входного файла, генерит встретившиеся комбинации, создает файл на файловой системе с именем комбинации, пишет туда строку (столько раз сколько комбинаций в строке), читает следующую стоку ...
втрому скриптику (редюсер) остается лишь сосчитать кол-во строк в каждом файлике и выявить у кого там больше.
в боевых условиях следует чуток соптимизировать - не сваливать все в один фолдер, а создавать вложенные фолдеры из первой цифры, второй цифры комбинации и только там уже файл с именем комбинации. если файл при каждой записи открывать закрывать, наверно можно и в параллель запускать.


Блин. Печально что не компелируется...
Я почему то подумал что это всё получится.
Даже не знаю что делать.

Ведь нужно обсчитать ещё 8 совпадений, 7 и 6

Пойду считать своим методом.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041584
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я то на Убунте. А клиент на Виндосе и за 800 км - у буржуинов.

Ок. Тупик, так тупик.
Клиент говорил, что неделя расчётов - это нормально. - Нормально, так нормально, только не на моём ноутбуке.
пусть нагружает свой.


Я конечно попробую всё оптимизировать... - с помощью местного населения.
:-)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041586
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Это технология Apache Hadoop. https://hadoop.apache.org/
По развертыванию локально можно поискать - но она неэффективна на single node.

вроде в ветке жава ты адекватное впечатление создавал, нафига такую ерунду пороть ? hadoop это идеология массивно параллельной обработки, есть множество задач где она эффективна и на одной ноде. вот собственно задача этого топика, яркий тому пример.
задача прекрасно ложится на map-reduce и фиг кто-то на ноутбуке обгонит хадуп.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041589
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Вот есть я. И есть мой ноутбук.
Я готов выполнять ваши команды.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041590
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас уже есть 2 таблицы - 10 цифр и 9 цифр - совпадений.
10 цифр - это очень быстро считалось - за сутки
Как раз всё проверим.

У меня Убунту и Виндос.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041591
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно обсчитать ещё 8, 7 и 6 совпадений.

Плиииз.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041604
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg

Блин. Печально что не компелируется...
Я почему то подумал что это всё получится.
Даже не знаю что делать.

Ведь нужно обсчитать ещё 8 совпадений, 7 и 6

Пойду считать своим методом.

я видел пару твоих топиков, жава да, ты не поднимешь. советую пилить на перле то, что я выше расписал.
что бы запустить мой код, нужно распоковать hadoop бинарники для винды, отсюда https://github.com/steveloughran/winutils прописать переменную HADOOP_HOME , вытрясти из меня еще один класс, Tool который запускает мои маперы и редюсеры, собрать maven проект, а это значит прописать в pom.xml библиотеки хадупа. я этот код в свой рабочий проект добавил где все либы в pom.xml уже есть.

вобщем для жава джуна это посильная задача, но в тебе я че-то сомневаюсь. я вечером могу проект собрать, но очевидно что ты его поддерживать не сможешь. думаю скриптик на перле в твоем случае более перспективно
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041607
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Это технология Apache Hadoop. https://hadoop.apache.org/
По развертыванию локально можно поискать - но она неэффективна на single node.

вроде в ветке жава ты адекватное впечатление создавал, нафига такую ерунду пороть ? hadoop это идеология массивно параллельной обработки, есть множество задач где она эффективна и на одной ноде. вот собственно задача этого топика, яркий тому пример.
задача прекрасно ложится на map-reduce и фиг кто-то на ноутбуке обгонит хадуп.

Я-же тебе писал выше что ты оказал автору "медвежью услугу".
Эксперт в бигдатах? - Давай консультируй его как все установить
и использовать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041608
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

вобщем для жава джуна это посильная задача, но в тебе я че-то сомневаюсь. я вечером могу проект собрать, но очевидно что ты его поддерживать не сможешь. думаю скриптик на перле в твоем случае более перспективно

:рука-лицо:

Ты профиль автора вообще смотрел? Он - Perl разработчик.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041611
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
miltorg

Блин. Печально что не компелируется...
Я почему то подумал что это всё получится.
Даже не знаю что делать.

Ведь нужно обсчитать ещё 8 совпадений, 7 и 6

Пойду считать своим методом.

я видел пару твоих топиков, жава да, ты не поднимешь. советую пилить на перле то, что я выше расписал.
что бы запустить мой код, нужно распоковать hadoop бинарники для винды, отсюда https://github.com/steveloughran/winutils прописать переменную HADOOP_HOME , вытрясти из меня еще один класс, Tool который запускает мои маперы и редюсеры, собрать maven проект, а это значит прописать в pom.xml библиотеки хадупа. я этот код в свой рабочий проект добавил где все либы в pom.xml уже есть.

вобщем для жава джуна это посильная задача, но в тебе я че-то сомневаюсь. я вечером могу проект собрать, но очевидно что ты его поддерживать не сможешь. думаю скриптик на перле в твоем случае более перспективно


Поддерживать это всё должен Пользователь-Юзер. Даже не я.
Замечательное вы предложили решение - к нему просто нужен дополнительный отдел программистов :-)
А так - всё просто.
А вот вопрос - быстро или нет?
Мне жутко интересно:

1. Исходный файл дать не могу - не моё.
2. Можно ведь сгенерировать файл в 5 тысяч записей
3. Обсчёт моим методом занимает - около суток.

За сколько справиться ваш метод?

Сейчас сгенерирую файл.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041623
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg

Сейчас сгенерирую файл.


Давай. Сгенерируй. Сделаем на синтетических данных.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041632
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

С генерировал:

http://prohorov-andrej.ru/u.txt
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041634
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Мог-бы сархивировать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041637
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто то забыл за месяц:

Ищем номера строк с максимальным числом 10-циферных совпадений - которое тоже нужно указать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041639
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041642
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тут 5 тыщ только. Неинтересно. Я думал 600 тыщ будет или мильярд.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041660
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

В настоящем исходном файле - 5 тысяч строк.
Вы правда за месяц это никак не поняли?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041663
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

600 тысяч - это первая таблица совпадений после сравнения каждой строки с каждой.
для 9 цифр

Для 10 цифр - 200 тысяч совпадений.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041676
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох от тебя ТЗ получать... Без бутылки все равно непонятно
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041677
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg

Поддерживать это всё должен Пользователь-Юзер. Даже не я.
Замечательное вы предложили решение - к нему просто нужен дополнительный отдел программистов :-)
А так - всё просто.
А вот вопрос - быстро или нет?
Мне жутко интересно:

1. Исходный файл дать не могу - не моё.
2. Можно ведь сгенерировать файл в 5 тысяч записей
3. Обсчёт моим методом занимает - около суток.

За сколько справиться ваш метод?

Сейчас сгенерирую файл.


гуд. вечером тогда научу номер строки вытягивать и запущу ... мерятся я люблю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041678
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока я, как высокооплачеваемый программист, намазывал чёрный хлеб растительным маслом...:

1. Все мои скрипты делают одно и тоже - сравнение и запись в БД
2. Значит оптимизацию можно начинать практически с первого сравнения.

Сейчас вам всё напишу.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041681
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,
кроме того, это реально оплачиваемое задание - я возьму как посредник - 1 евро в час
И я давал клиенту ссылку на этот форум.
Если вы выдадите результаты на 6,7,8,9 быстро - я обязательно про вас напишу клиенту - мне тоже не интересно сидеть неделями с включённой программой.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041684
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Есть одно но. Не знаю прочитали вы про это или нет - эти то таблицы - на один раз, Но! данные будут пополняться
И всё должно работать с полной базой , и не отделом программистов, а желательно вообще - само собой на машине удалённого Юзера.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041702
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Пока я, как высокооплачеваемый программист, намазывал чёрный хлеб растительным маслом...:

1. Все мои скрипты делают одно и тоже - сравнение и запись в БД
2. Значит оптимизацию можно начинать практически с первого сравнения.

Сейчас вам всё напишу.


Итак. Первый скрипт вытаскивает всё из исходного файла:

Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
#!/usr/bin/perl

require "./baza.pl";

$dbh->do("SET autocommit=0");


$ot = '.';
$isx = 'k13_3.txt'; # -------- 5000 strok
$tabBD = 'n8n1';
$sovpadenij = 8; # Уже ищу по 8 


$dbh->do("DROP TABLE $tabBD");

$dbh->do("CREATE TABLE $tabBD
(
id int(11) PRIMARY KEY auto_increment,
d1 VARCHAR(100),
myData1 VARCHAR(12),
myData2 VARCHAR(12),
str1 int(7),
str2 int(7),
sovpalo int(3)
)");



open D, "$ot/$isx";
@u = <D>;
close D;

$kolStr = $#u;


for $str (0..$kolStr){
  
  $str =~ s/[\r\n]//g;
  
  #print $u[$str];
  print $str;
	
	($d, $dn) = split (/\t/, $u[$str]);

  
  #print $dn."\n";

@a = split /\s/, $dn;



for $str2 ($str+1 .. $kolStr){

  next if $str2==$str;
  #print "$str2\n";
  @b = (); %isect = (); %inion = ();


  $str2 =~ s/[\r\n]//g;
	
	($d2, $dn2) = split (/\t/, $u[$str2]);


@b = split /\s/, $dn2;

#print @a;print "\n";
#print @b;print "\n";

for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}

@isect = keys %isect;

$is = scalar(@isect);

if($is >= $sovpadenij){
  #print "$u[$str]\n";
  #print "$u[$str2]\n";

$r = join('_', sort {$a<=>$b} @isect );

  
$dbh->do("INSERT INTO $tabBD VALUES (null, '$r', '$d', '$d2', $str, $str2, $is)");


}}

print "\n";
}

$dbh->do("COMMIT");
$dbh->disconnect;
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так
miltorg

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$dbh->do("CREATE TABLE $tabBD
(
id int(11) PRIMARY KEY auto_increment,
d1 VARCHAR(100),
myData1 VARCHAR(12),
myData2 VARCHAR(12),
str1 int(7),
str2 int(7),
sovpalo int(3)
) ENGINE = MYISAM;");




Inserts должны ускорится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041706
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
miltorg
Моя программа закончила считать этой ночью. Я даже не знаю - сколько дней это длилось.

Индексы строил? Explain смотрел? Движок на MyIsam менял? (По умолчанию МайСКЛ создает InnoDB).


Индексы тут пока строить вроде не на чем и не за чем - пока идёт просто заполнение.
У меня такое ощущение что файл вместо БД заполнялся быстрее.
Будем проверять.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041708
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Спасибо огромное
Сейчас проверю на сотне строк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041714
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

Спасибо огромное
Сейчас проверю на сотне строк.


Прошло 0.42 min - это на 10 строках моего, исходного скрипта.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041716
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg
mayton,

Спасибо огромное
Сейчас проверю на сотне строк.


Прошло 0.42 min - это на 10 строках моего, исходного скрипта.


Прошло 1.23 min

Это ваше решение выдало.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041717
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg
пропущено...


Прошло 0.42 min - это на 10 строках моего, исходного скрипта.


Прошло 1.23 min

Это ваше решение выдало.


Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
#!/usr/bin/perl

$t = time();

require "./baza.pl";

$dbh->do("SET autocommit=0");


$ot = '.';
$isx = 'keno13_3.txt';
$tabBD = 'n8n1';
$sovpadenij = 8;


$dbh->do("DROP TABLE $tabBD");

$dbh->do("CREATE TABLE $tabBD
(
id int(11) PRIMARY KEY auto_increment,
d1 VARCHAR(100),
myData1 VARCHAR(12),
myData2 VARCHAR(12),
str1 int(7),
str2 int(7),
sovpalo int(3)
) ENGINE = MYISAM;"); 



open D, "$ot/$isx";
@u = <D>;
close D;

$kolStr = $#u;


for $str (0..10){
  
  $str =~ s/[\r\n]//g;
  
  #print $u[$str];
  print $str;
	
	($d, $dn) = split (/\t/, $u[$str]);

  
  #print $dn."\n";

@a = split /\s/, $dn;



for $str2 ($str+1 .. $kolStr){

  next if $str2==$str;
  #print "$str2\n";
  @b = (); %isect = (); %inion = ();


  $str2 =~ s/[\r\n]//g;
	
	($d2, $dn2) = split (/\t/, $u[$str2]);


@b = split /\s/, $dn2;

#print @a;print "\n";
#print @b;print "\n";

for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}

@isect = keys %isect;

$is = scalar(@isect);

if($is >= $sovpadenij){
  #print "$u[$str]\n";
  #print "$u[$str2]\n";

$r = join('_', sort {$a<=>$b} @isect );

  
$dbh->do("INSERT INTO $tabBD VALUES (null, '$r', '$d', '$d2', $str, $str2, $is)");

#print " $str-$str2 $is";
#print "\n";
}}

print "\n";
}

$dbh->do("COMMIT");
$dbh->disconnect;

$t = (time()-$t)/60;
print "Прошло ";
printf('%0.2f', $t);
print " min";
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041722
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А раньше наполнение таблички сколько было? Я просто не помню цифр.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041725
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хи-хи.
Просто запись в файл:

Прошло 0.10 min

В 4 раза быстрее.

Хи-хи. Вот тебе и БД.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041728
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот я посравнивал хромосомы. Лог типа. Везде где больше 12 совпадений. У тебя там надо было что-то от десятки отсекать?
Я забил на это делал своё. Но ты всё равно глянть корректность.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Pohuyarili!! ... Go-Go!
Positions: ( 1194, 245 ), count = 12
Chromosomes: 1194	60 88 42 77 10 14 84 59 63 66 76 15 62 89 6 32 17 60 38 13  <=> 245	72 62 38 2 88 76 14 1 45 1 43 15 60 59 6 32 89 48 43 84 
Intersection (raw bits) : 2C00002080006020 : 0000000001880800 
Intersection decoded    : 6,14,15,32,38,59,60,62,76,84,88,89,
Positions: ( 2886, 201 ), count = 12
Chromosomes: 2886	62 13 20 29 28 36 59 30 10 73 36 56 11 21 62 51 50 86 18 83  <=> 201	41 50 70 21 51 18 14 73 76 62 9 29 77 56 10 36 32 13 86 1 
Intersection (raw bits) : 2086000810121200 : 0000000000200100 
Intersection decoded    : 10,13,18,21,29,36,50,51,56,62,73,86,
Positions: ( 3489, 1878 ), count = 12
Chromosomes: 3489	49 86 69 22 42 68 2 40 81 38 34 35 44 72 49 59 31 43 29 65  <=> 1878	58 81 65 24 23 44 61 10 74 22 29 59 2 38 31 20 35 42 51 34 
Intersection (raw bits) : 04000A2650200002 : 0000000000010001 
Intersection decoded    : 2,22,29,31,34,35,38,42,44,59,65,81,
Positions: ( 4515, 4362 ), count = 12
Chromosomes: 4515	2 71 57 79 19 60 15 36 44 32 20 40 56 67 75 55 35 46 64 35  <=> 4362	15 64 32 40 83 5 57 66 46 35 31 13 15 45 60 44 20 6 75 71 
Intersection (raw bits) : 0900288480084000 : 8000000000000440 
Intersection decoded    : 15,20,32,35,40,44,46,57,60,71,75,128,
Positions: ( 4923, 2361 ), count = 12
Chromosomes: 4923	14 3 26 67 51 60 69 82 6 64 88 4 49 26 47 16 74 8 13 66  <=> 2361	64 84 4 8 83 74 67 69 60 13 64 31 4 39 16 66 56 85 6 51 
Intersection (raw bits) : 08040000000090A8 : 8000000000000216 
Intersection decoded    : 4,6,8,13,16,51,60,66,67,69,74,128,
Vot i pizdec! Delov na 280 mili-sekund scuka!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041729
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в меню сообщения есть кнопка ДОПОЛН. там есть ТЭГ spoiler
"простыни" можно прятать под этот ТЭГ
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041732
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обижаешь. У меня - не простыня.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041734
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

у вас тестовый 5000 файл?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041745
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

а у меня в кавычках... никого не пытался обидеть) каждый думает в свою меру...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041751
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

у вас тестовый 5000 файл?

Да тот мелкий который u.txt
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041754
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
вы прям с него работаете? Потому что скорость не реальная даже для простого чтения файла
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041764
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убунта его закешировала. Сколько там? Жалкие килобайты.

Но суть - алгоритме.

Ты навали на меня так чтоб я почувствовал.

Дай лям.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041799
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПопробуй так
==>) ENGINE = MYISAM;");

Inserts должны ускорится. продолжим изыски - таблицы в памяти
Код: sql
1.
ENGINE = MEMORY

перед созданием таблицы установить
SET max_heap_table_size = ... для MAX размера таблицы.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041805
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне почему-то эту задачу хочется реализовать через unix - конвейер.

Типа загрузка таблицы. Калькуляция хромосом-дубликатов.

Код: sql
1.
$ miltorg-load | miltorg-calculate > report.txt



И все эти генераторы цифр и пермутаторы - просто как звенья цепочки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041810
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
maytonПопробуй так
==>) ENGINE = MYISAM;");

Inserts должны ускорится.
продолжим изыски - таблицы в памяти
Код: sql
1.
ENGINE = MEMORY

перед созданием таблицы установить
SET max_heap_table_size = ... для MAX размера таблицы.
Вот еще SQLite мне нравится
https://perlmaven.com/sqlite-in-memory

Правда некоторые возможности SQL диалекта у него ограничены. Там надо смотреть. Какие-то запросы
могут не работать. Возможно там какой-нибудь pivot.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041842
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
miltorg

Поддерживать это всё должен Пользователь-Юзер. Даже не я.
Замечательное вы предложили решение - к нему просто нужен дополнительный отдел программистов :-)
А так - всё просто.
А вот вопрос - быстро или нет?
Мне жутко интересно:

1. Исходный файл дать не могу - не моё.
2. Можно ведь сгенерировать файл в 5 тысяч записей
3. Обсчёт моим методом занимает - около суток.

За сколько справиться ваш метод?

Сейчас сгенерирую файл.


гуд. вечером тогда научу номер строки вытягивать и запущу ... мерятся я люблю.


на комбинацию по 10 у меня заняло 31 минуту на стареньком i7-3770k.
у меня не нашлось даже в трех строках совпадений, максимум в двух. таких 9242 совпадения. я пока не разобрался, но подозреваю поскольку у меня не хадуп, а лишь заглушка от него в папочке на 5Мб, то работало это все в одном потоке, а не в параллель. видимо на что-то посерьезней все же нужно виртуалку с хадупом запускать.
зы. а куда можно файлик с результатми выложить, он хоть не по формату, но с выводом строк где найдены комбинации ?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041847
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

зы. а куда можно файлик с результатми выложить, он хоть не по формату, но с выводом строк где найдены комбинации ?

сюда получилось выложить
https://filebin.net/ugpm5w22ble5p5lt/miltorgout.zip?t=l9n8ljne

запущу теперь по 9 комбинаций.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041861
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
запущу теперь по 9 комбинаций.

странно, по 9 комбинаций те же 31 минута и не видно больше двух комбинаций, 79504 совпадений.

https://filebin.net/srpfxmekf7dhp0n8/miltorg9.zip?t=xk027t84
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041863
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чего единичка дважды повторилась? В хромосоме. Разве они не уникальны?

Код: sql
1.
[1, 30, 45, 46, 47, 49, 55, 85, 89]     2 /1;55;85;47;25;82;33;30;1;23;72;84;45;46;17;49;12;16;89;17; /83;31;19;30;49;54;85;69;39;1;79;47;55;58;89;61;46;45;56;84;
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041865
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А чего единичка дважды повторилась? В хромосоме. Разве они не уникальны?

Код: sql
1.
[1, 30, 45, 46, 47, 49, 55, 85, 89]     2 /1;55;85;47;25;82;33;30;1;23;72;84;45;46;17;49;12;16;89;17; /83;31;19;30;49;54;85;69;39;1;79;47;55;58;89;61;46;45;56;84;


в исходном файле вроде есть такая строка
Код: plaintext
4813	1 55 85 47 25 82 33 30 1 23 72 84 45 46 17 49 12 16 89 17 
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041866
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неаккуратненько как-то. У Прохорыча было такое?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041870
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 8 комбинаций нашлось 505262 совпадений и из них 623 в трех строках
причем посчиталось быстрее, за 25 минут

https://filebin.net/4rbttlchbmx792nb/miltorg8.zip?t=qfa6rgq0
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041873
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u.txt
какая то другая задача - числа в строках повторяются
в лотерее так не бывает
да и "непонятных" дубликатов куча в ответе
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041885
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ждем автора.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041970
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

причем посчиталось быстрее, за 25 минут


у меня загдушка для хадупа была версии 2.4, проапгрейдил "хадуп" до 2.7 по 6 комбинаций быстрее чем за 10 минут посчиталось. 2 ключа в 7 сроках нашлось:

cat part-r-0000* | grep "7 /"
Код: plaintext
1.
[20, 42, 45, 65, 71, 81]        7 /61;20;11;37;70;65;71;78;85;18;63;33;45;6;81;71;42;25;59;84; /41;45;74;81;71;44;42;21;58;79;83;7;65;73;67;64;40;56;20;52; /71;45;8;88;42;88;19;1;65;81;76;88;15;16;15;2;49;22;20;70; /80;49;1;31;45;5;21;47;51;49;4;65;5;20;4;71;57;81;42;64; /75;65;43;45;81;74;71;70;33;5;22;17;54;10;35;20;45;24;74;42; /24;27;81;45;79;42;71;20;52;84;24;65;2;76;39;8;67;12;13;33; /13;1;27;42;20;22;66;21;2;85;71;72;35;87;8;65;81;45;53;32;
[10, 13, 37, 45, 69, 71]        7 /10;68;84;37;59;45;68;13;69;4;12;7;31;66;75;71;80;71;29;8; /71;78;69;78;30;45;16;2;5;44;2;81;55;32;21;40;10;13;77;37; /27;16;63;52;29;10;49;13;37;41;55;80;71;38;45;7;69;31;87;36; /39;8;11;40;31;30;75;71;69;45;31;37;13;16;10;85;57;23;80;54; /54;87;13;71;45;52;53;85;62;71;65;69;14;18;10;22;37;33;70;47; /52;87;18;45;41;33;71;29;58;10;69;14;79;61;77;37;88;17;61;13; /69;71;37;15;42;13;47;20;35;37;30;48;75;45;83;16;20;10;6;33;
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042004
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Блин. Я неповтор не учёл. Много его там?
Он на что-то влияет? Надо подумать или проще почистить?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042007
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторю ещё раз.

Решение задачи - номера строк где есть максимальные повторы 10 комбинаций

То есть это буквально максимум 20 строк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042025
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Alex_Ustinov,

Блин. Я неповтор не учёл. Много его там?
Он на что-то влияет? Надо подумать или проще почистить?

В принципе он ни на что не влияет. Тебе надо просто посмотреть были ли повторы в исходных
файлах от заказчика. И если не было - то генерацию рандомных файлов надо сделать более
качественной.

Еще может влиять на наши статистические оценки. Это как испорченные лотерейные билеты.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042040
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
H5N1

зы. а куда можно файлик с результатми выложить, он хоть не по формату, но с выводом строк где найдены комбинации ?

сюда получилось выложить
https://filebin.net/ugpm5w22ble5p5lt/miltorgout.zip?t=l9n8ljne

запущу теперь по 9 комбинаций.


Что это? Это точно не решение.
Секунду. Я сейчас подправлю исходный файл.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042042
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

по одной-две пары совпадений.
Исходный набор превращается в 18-19 чисел вместо 20-ти
ни на что не влияет кроме время выполнения, если вы тестируете время.
авторНадо подумать или проще почистить?проще почистить, не понимаю почему вы этого не сделали.
не надо впахивать оппонента ради вашей задачи.
Если ранее давались упорядоченные наборы неповторяющихся чисел, то этот набор с повторяющимися, что меняет логику.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042053
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Новый исходный файл. Повторы пока не убрал.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042061
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто то забыл за месяц:

Ищем номера строк с максимальным числом 10-циферных совпадений - которое тоже нужно указать.

Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения
2_3_4_5_6_7_8_9_10_11 ------ есть в 15, 20, 50 строках ------- 3 строки совпадения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042078
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изучаю python, вот вам на нем генерилка и файл после нее :)

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
import sys,datetime
from random import sample

size = 5000; nmin = 1; nmax = 79

if len(sys.argv) > 1:
	name = sys.argv[1]
else:
	name = 'miltbase.txt'

startday = datetime.date.today() + datetime.timedelta(days=1-size)

with open(name, 'w') as F1:
	for i in range(size):
		s = ''
		day = startday + datetime.timedelta(days=i)
		s += day.strftime('%d.%m.%Y') + '\t'
		s += ' '.join(str(x) for x in sorted(sample(range(nmin,nmax+1),20))) + '\n'
		F1.write(s)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042099
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zyubr,

Что это? Исходный Файл с неповторяющимися цифрами в строках?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042103
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Если кто то забыл за месяц:

Ищем номера строк с максимальным числом 10-циферных совпадений - которое тоже нужно указать.

Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения
2_3_4_5_6_7_8_9_10_11 ------ есть в 15, 20, 50 строках ------- 3 строки совпадения

Протокол работы моей утилиты с 12-циферными совпадениями был верный?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042104
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файл мне нравится - он гораздо более похож на исходный клиента. Если нет повторов в строках. Их там нет?

В любом случае - я сейчас с ним подшаманю и мы возьмём его за основу

Спасибо Вам большое.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042106
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я и не проверял.
Нужно было проверять?
Вы там кричали про какие то миллионы - Я решил что вы выпили.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

Я и не проверял.
Нужно было проверять?
Вы там кричали про какие то миллионы - Я решил что вы выпили.

Вечерочком я опрокидываю ликеры и настойки. Есть такое дело. Лечусь.

Но я тебе разработал софт. Он работает. Работает быстро. А ты - даже проигнорировал проверить результат?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042114
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg
файл мне нравится - он гораздо более похож на исходный клиента. Если нет повторов в строках. Их там нет?


вроде как, не должно :)

Python’s random module provides random.sample() function for random sampling and randomly pick more than one element from the list without repeating elements .
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042117
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура. Есть новый, идентичный исходному файл:
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042121
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
miltorg
mayton,

Я и не проверял.
Нужно было проверять?
Вы там кричали про какие то миллионы - Я решил что вы выпили.

Вечерочком я опрокидываю ликеры и настойки. Есть такое дело. Лечусь.

Но я тебе разработал софт. Он работает. Работает быстро. А ты - даже проигнорировал проверить результат?


Вот видете.
Сейчас чего от меня хотите?
1. Что бы я проверил ваши совпадения?
или вам нужны восторги?

Восторгаюсь.

Но повторю. Мне нужно решение задачи или алгоритм.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042124
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Ура. Есть новый, идентичный исходному файл:


Работать желательно с ним и только с ним.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton
пропущено...

Вечерочком я опрокидываю ликеры и настойки. Есть такое дело. Лечусь.

Но я тебе разработал софт. Он работает. Работает быстро. А ты - даже проигнорировал проверить результат?


Вот видете.
Сейчас чего от меня хотите?
1. Что бы я проверил ваши совпадения?
или вам нужны восторги?

Восторгаюсь.

Но повторю. Мне нужно решение задачи или алгоритм.


Вот ты вредный... Яж тестирую. Я твои тестовый строки с 10 цифрами выбросил. Так как нашел сверх-покрытие. С 12
цифрами. И прошу тебя проверить результат по протоколу работы моей программы. Которая написана на pure Java
без всяких хадупов и ничего больше не требует.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042126
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересная генерация, на 1-й позиции практически 95% числа 1..9 а на последней все меньше 80
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042127
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Сейчас новый исходный файл.
Он точная копия исходного в задании.
Работайте пожалуйста с ним - тогда работа имеет хоть какой то смысл.

22275586
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042128
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Капец ты умеешь демотивировать....
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042130
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А что мне демативировать-недемативировать

Я даже написал что готов деньги заплатить если смогу продать клиенту ваше решение.

Но нужно чтоб клиент это купил.

А купит он решение только в том виде котором ОН хочет - вид этого решения я написал уже 500 раз.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты про деньги... Ну это мне не интересно. Я в этом форуме не ради денег. Я тут вообще ни цента ни заработал.

Думал Вискарь с тобой попить да и то не вышло. А программу я тебе подарю. Просто я хочу ее до зеленого сегмента
теста довести.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042135
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Первые 20 строк из сделанные из нового файла:

1 13_15_17_29_31_32_34_38_51_60_76 0-24 11
2 13_14_15_17_21_26_29_31_34_40_51 0-268 11
3 13_14_15_26_38_40_51_60_67_76 0-346 10
4 15_29_32_34_39_42_44_51_60_63_67 0-372 11
5 17_21_26_31_34_40_42_60_63_67 0-397 10
6 14_15_17_21_29_34_38_40_51_63_67 0-497 11
7 26_32_38_40_42_44_51_63_67_76 0-855 10
8 13_17_21_26_29_31_32_34_60_67_76 0-1012 11
9 13_14_15_21_26_29_38_42_44_51_60_63_76 0-1036 13
10 14_17_26_29_31_34_38_42_63_76 0-1349 10
11 17_21_26_31_32_38_39_51_60_76 0-2191 10
12 14_15_17_26_34_38_40_44_51_63 0-2438 10
13 14_15_21_34_38_39_40_42_51_67 0-2449 10
14 13_14_15_26_32_39_40_42_60_63 0-2586 10
15 13_15_17_21_31_32_34_39_60_76 0-2724 10
16 13_14_15_17_26_44_51_63_67_76 0-2738 10
17 13_21_29_31_32_38_39_42_63_67 0-2936 10
18 13_17_29_31_38_39_40_42_44_60 0-3166 10
19 13_14_29_31_32_34_38_44_63_76 0-3250 10
20 13_15_17_21_29_31_32_44_60_63_76 0-3562 11
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042139
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

100 строк обрабатывал 1 мин

1000 строк - 10 мин

Файл полностью (5000) - около часа.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042140
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПервые 20 строк из сделанные из нового файла:зачем выкладывать эти никчемные непонятные данные? что это за цифры 0-2449?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042145
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

может посмотреть требование к решению?

Может это строки исходного файла?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042149
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg,

Первые 20 строк из сделанные из нового файла:

1 13_15_17_29_31_32_34_38_51_60_76 0-24 11
2 13_14_15_17_21_26_29_31_34_40_51 0-268 11
3 13_14_15_26_38_40_51_60_67_76 0-346 10
4 15_29_32_34_39_42_44_51_60_63_67 0-372 11
5 17_21_26_31_34_40_42_60_63_67 0-397 10
6 14_15_17_21_29_34_38_40_51_63_67 0-497 11
7 26_32_38_40_42_44_51_63_67_76 0-855 10
8 13_17_21_26_29_31_32_34_60_67_76 0-1012 11
9 13_14_15_21_26_29_38_42_44_51_60_63_76 0-1036 13
10 14_17_26_29_31_34_38_42_63_76 0-1349 10
11 17_21_26_31_32_38_39_51_60_76 0-2191 10
12 14_15_17_26_34_38_40_44_51_63 0-2438 10
13 14_15_21_34_38_39_40_42_51_67 0-2449 10
14 13_14_15_26_32_39_40_42_60_63 0-2586 10
15 13_15_17_21_31_32_34_39_60_76 0-2724 10
16 13_14_15_17_26_44_51_63_67_76 0-2738 10
17 13_21_29_31_32_38_39_42_63_67 0-2936 10
18 13_17_29_31_38_39_40_42_44_60 0-3166 10
19 13_14_29_31_32_34_38_44_63_76 0-3250 10
20 13_15_17_21_29_31_32_44_60_63_76 0-3562 11


Первые 20 из Базы:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
+------+----------------------------------------+------------+------------+------+------+---------+
| id   | d1                                     | myData1    | myData2    | str1 | str2 | sovpalo |
+------+----------------------------------------+------------+------------+------+------+---------+
|    1 | 13_15_17_29_31_32_34_38_51_60_76       | 31.05.2007 | 24.06.2007 |    0 |   24 |      11 |
|    2 | 13_14_15_17_21_26_29_31_34_40_51       | 31.05.2007 | 23.02.2008 |    0 |  268 |      11 |
|    3 | 13_14_15_26_38_40_51_60_67_76          | 31.05.2007 | 11.05.2008 |    0 |  346 |      10 |
|    4 | 15_29_32_34_39_42_44_51_60_63_67       | 31.05.2007 | 06.06.2008 |    0 |  372 |      11 |
|    5 | 17_21_26_31_34_40_42_60_63_67          | 31.05.2007 | 01.07.2008 |    0 |  397 |      10 |
|    6 | 14_15_17_21_29_34_38_40_51_63_67       | 31.05.2007 | 09.10.2008 |    0 |  497 |      11 |
|    7 | 26_32_38_40_42_44_51_63_67_76          | 31.05.2007 | 02.10.2009 |    0 |  855 |      10 |
|    8 | 13_17_21_26_29_31_32_34_60_67_76       | 31.05.2007 | 08.03.2010 |    0 | 1012 |      11 |
|    9 | 13_14_15_21_26_29_38_42_44_51_60_63_76 | 31.05.2007 | 01.04.2010 |    0 | 1036 |      13 |
|   10 | 14_17_26_29_31_34_38_42_63_76          | 31.05.2007 | 08.02.2011 |    0 | 1349 |      10 |
|   11 | 17_21_26_31_32_38_39_51_60_76          | 31.05.2007 | 30.05.2013 |    0 | 2191 |      10 |
|   12 | 14_15_17_26_34_38_40_44_51_63          | 31.05.2007 | 01.02.2014 |    0 | 2438 |      10 |
|   13 | 14_15_21_34_38_39_40_42_51_67          | 31.05.2007 | 12.02.2014 |    0 | 2449 |      10 |
|   14 | 13_14_15_26_32_39_40_42_60_63          | 31.05.2007 | 29.06.2014 |    0 | 2586 |      10 |
|   15 | 13_15_17_21_31_32_34_39_60_76          | 31.05.2007 | 14.11.2014 |    0 | 2724 |      10 |
|   16 | 13_14_15_17_26_44_51_63_67_76          | 31.05.2007 | 28.11.2014 |    0 | 2738 |      10 |
|   17 | 13_21_29_31_32_38_39_42_63_67          | 31.05.2007 | 14.06.2015 |    0 | 2936 |      10 |
|   18 | 13_17_29_31_38_39_40_42_44_60          | 31.05.2007 | 30.01.2016 |    0 | 3166 |      10 |
|   19 | 13_14_29_31_32_34_38_44_63_76          | 31.05.2007 | 23.04.2016 |    0 | 3250 |      10 |
|   20 | 13_15_17_21_29_31_32_44_60_63_76       | 31.05.2007 | 01.03.2017 |    0 | 3562 |      11 |
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042153
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База проработала 1,5 минуты

Что получается.
Получается что 1,5 минуты нужно уменьшить в 7 раз как минимум - Тогда расчёты будут идти не неделю, а 1 день.

15 сек должно кушать 100 строк. А сейчас - 90 секунд.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042155
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Alex_Ustinov,
может посмотреть требование к решению?
Может это строки исходного файла?
требование к решению? это что такое? первые 20 из какой базы?
Дан файл с вводными из 5000 строк авторУра. Есть новый, идентичный исходному файл:
К сообщению приложен файл (miltbase.zip - 84Kb) cкачать

20 из какой едрить-мадрить базы?)
1 13_15_17_29_31_32_34_38_51_60_76 0-24 11
2 13_14_15_17_21_26_29_31_34_40_51 0-268 11

0-24
0-268
Что это? Зачем эти 20 строк?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042171
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorg
Alex_Ustinov,
может посмотреть требование к решению?
Может это строки исходного файла?
требование к решению? это что такое? первые 20 из какой базы?
Дан файл с вводными из 5000 строк авторУра. Есть новый, идентичный исходному файл:
К сообщению приложен файл (miltbase.zip - 84Kb) cкачать


20 из какой едрить-мадрить базы?)
1 13_15_17_29_31_32_34_38_51_60_76 0-24 11
2 13_14_15_17_21_26_29_31_34_40_51 0-268 11

0-24
0-268
Что это? Зачем эти 20 строк?
Я плюсую. Мне тоже непонятно что такое 0-24. Андрей. Ты можешь сделать нормальное ТЗ ? Я уже 2 варианта сделал и 1 вариант
откатил назад т.к. понял что ты все таки считаешь количество цифр а не хромосом. Жаль время терять.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042174
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот хвост моего лога. Найдено примерно 29 тыщ за 1 секунду.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
.....
Positions: ( 4999, 3679 ), count = 11 : { 19,29,31,39,43,45,51,57,63,65,71, }
Positions: ( 4999, 3765 ), count = 10 : { 6,17,26,31,39,42,45,51,63,65, }
Positions: ( 4999, 4114 ), count = 10 : { 19,26,29,51,55,57,63,65,68,71, }
Positions: ( 4999, 4981 ), count = 10 : { 17,26,31,39,43,55,56,65,68,71, }
Positions: ( 5000, 108 ), count = 10 : { 8,25,30,32,51,62,66,69,73,77, }
Positions: ( 5000, 151 ), count = 10 : { 8,17,20,25,32,33,35,39,69,77, }
Positions: ( 5000, 1954 ), count = 10 : { 20,25,27,32,33,35,39,62,69,77, }
Positions: ( 5000, 1965 ), count = 10 : { 8,11,25,32,35,39,62,66,77,128, }
Positions: ( 5000, 2600 ), count = 10 : { 11,17,25,27,33,39,62,66,73,128, }
Positions: ( 5000, 2910 ), count = 10 : { 11,17,27,30,35,39,51,62,73,128, }
Positions: ( 5000, 3044 ), count = 10 : { 14,20,25,32,33,39,51,62,69,73, }
Positions: ( 5000, 3186 ), count = 10 : { 8,14,20,25,30,32,35,62,66,77, }
Positions: ( 5000, 3188 ), count = 10 : { 8,11,17,25,27,33,35,39,69,73, }
Positions: ( 5000, 4642 ), count = 12 : { 8,11,17,20,30,32,35,39,51,73,77,128, }
Positions: ( 5000, 4995 ), count = 10 : { 8,25,32,35,39,51,62,66,77,128, }
Finished. Elapsed time : 1137 ms, findings : 29922



По новому файлу. Проверяй. Чорт тебя дери...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042178
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

есть файл с 5000 тыщ строк. Посл вариант без повторений.

найти макс.вхождение 10 чисел (указать номер строк вхождения, ведь надо как то проверять :-),
PS
он поменял номера строк на даты, значит указать даты вхождения, ведь номеров строк нет...
это все ТЗ


так как считает долго, miltorg берет 20 строк и показывает какие то тайминги)))

авторФайл полностью (5000) - около часа.
....
Получается что 1,5 минуты нужно уменьшить в 7 раз как минимум - Тогда расчёты будут идти не неделю, а 1 день.
....
15 сек должно кушать 100 строк. А сейчас - 90 секунд.но сегодня Пятница
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042182
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, да с датами - вообще отдельная задача IMHO. Мне просто как предмет для изучения - неинтересно.

Вот данный поиск похожих хромосом - квадратичный. Интерес топика в том что на мильярде мы все умрём.
И интерес есть применить например кластеризацию для отбрасывания заведомо лишних хромосом которые
не войдут никогда в результат.

И есть интерес найти золотую середину между предварительной кластеризаций которая оп любому займет
10-20 прогонов всего файла и между тупым квадратичным брутфосом который я тоже реализовал но по своему.

Если хотим 5 тыщ - любой школьник закодит это на Борланд паскале и все будет летать и свистеть. И хадупы
не нужны.

А вот если подойти с точки зрения науки. То нужны научные методы. Я-бы предложил алгоритмы кластеризации.
Но что-то мне кажется что мы до них просто не дойдем. Андрею хватит и брутфорса.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042193
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вот хвост моего лога. Найдено примерно 29 тыщ за 1 секунду.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
.....
Positions: ( 4999, 3679 ), count = 11 : { 19,29,31,39,43,45,51,57,63,65,71, }
Positions: ( 4999, 3765 ), count = 10 : { 6,17,26,31,39,42,45,51,63,65, }
Positions: ( 4999, 4114 ), count = 10 : { 19,26,29,51,55,57,63,65,68,71, }
Positions: ( 4999, 4981 ), count = 10 : { 17,26,31,39,43,55,56,65,68,71, }
Positions: ( 5000, 108 ), count = 10 : { 8,25,30,32,51,62,66,69,73,77, }
Positions: ( 5000, 151 ), count = 10 : { 8,17,20,25,32,33,35,39,69,77, }
Positions: ( 5000, 1954 ), count = 10 : { 20,25,27,32,33,35,39,62,69,77, }
Positions: ( 5000, 1965 ), count = 10 : { 8,11,25,32,35,39,62,66,77,128, }
Positions: ( 5000, 2600 ), count = 10 : { 11,17,25,27,33,39,62,66,73,128, }
Positions: ( 5000, 2910 ), count = 10 : { 11,17,27,30,35,39,51,62,73,128, }
Positions: ( 5000, 3044 ), count = 10 : { 14,20,25,32,33,39,51,62,69,73, }
Positions: ( 5000, 3186 ), count = 10 : { 8,14,20,25,30,32,35,62,66,77, }
Positions: ( 5000, 3188 ), count = 10 : { 8,11,17,25,27,33,35,39,69,73, }
Positions: ( 5000, 4642 ), count = 12 : { 8,11,17,20,30,32,35,39,51,73,77,128, }
Positions: ( 5000, 4995 ), count = 10 : { 8,25,32,35,39,51,62,66,77,128, }
Finished. Elapsed time : 1137 ms, findings : 29922



По новому файлу. Проверяй. Чорт тебя дери...


А начала чтоб сравнить с моим уже опубликованным началом - у вас нет?
Ок. Сейчас гляну в конец файла.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042194
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg


А начала чтоб сравнить с моим уже опубликованным началом - у вас нет?
Ок. Сейчас гляну в конец файла.


Подождите. Какой конец файла?
Мне его считать - 1,5 часа.

Если только специально для вас обсчитать последние строки...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042195
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

в первичной постановке задачи милрд не будет. Будет добавляться по 1 строке в день.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042196
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Я плюсую. Мне тоже непонятно что такое 0-24. Андрей. Ты можешь сделать нормальное ТЗ ? Я уже 2 варианта сделал и 1 вариант
откатил назад т.к. понял что ты все таки считаешь количество цифр а не хромосом. Жаль время терять.


0 и 24 строка исходного файла - это правда так сложно понять?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042199
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton

Я плюсую. Мне тоже непонятно что такое 0-24. Андрей. Ты можешь сделать нормальное ТЗ ? Я уже 2 варианта сделал и 1 вариант
откатил назад т.к. понял что ты все таки считаешь количество цифр а не хромосом. Жаль время терять.


0 и 24 строка исходного файла - это правда так сложно понять?

Нет мне не сложно понять. Мне лень делать гипотезы и их проверять. Ты мог-бы просто сделать одолжение
и описать что входные данные - текстовый файл такого-то формата? С датаи или без дат.

Выходной файл - отчот тоже текстового формата с такими-то полями.

Это ведь не сложно? Ты бы избавил мир от лишних вопросов. И кстати. Есть система нумерации порядковых
номеров принятая в С++/Java. Она начинается с нуля. И есть система Pascal. Она идет с единицы. Это пустяк.
Но вообще когда говорят о ТЗ - то и такие мелочи оговаривают. Это - вопрос It-культуры.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042200
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg


А начала чтоб сравнить с моим уже опубликованным началом - у вас нет?
Ок. Сейчас гляну в конец файла.


Подождите. Какой конец файла?
Мне его считать - 1,5 часа.

Если только специально для вас обсчитать последние строки...


И у меня вообще не будет 5000 строки - см код. который я тут уже выложил 2 раза:

...
for $str2 ($str+1 .. $kolStr){

...

5000 строка будет сравниваться только с 5001. А 5001 строки и нет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042201
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
короче, :)

1. есть первичный файл в 5000 строк
2. miltorg генерит из него второй файл в стопиццоттыщмиллионов строк, где каждая строчка описывает совпадение 2 каких-либо строк первоначального файла, но не менее 10 (или 9?) чисел в строке, чтобы совпадало
там же указываются номера этих строк
3. закащщику нужен вообще третий файл, где указываются только самые частые совпадения, с их количеством

видимо, так ))
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042206
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
miltorg
пропущено...


0 и 24 строка исходного файла - это правда так сложно понять?

Нет мне не сложно понять. Мне лень делать гипотезы и их проверять. Ты мог-бы просто сделать одолжение
и описать что входные данные - текстовый файл такого-то формата? С датаи или без дат.

Выходной файл - отчот тоже текстового формата с такими-то полями.

Это ведь не сложно? Ты бы избавил мир от лишних вопросов. И кстати. Есть система нумерации порядковых
номеров принятая в С++/Java. Она начинается с нуля. И есть система Pascal. Она идет с единицы. Это пустяк.
Но вообще когда говорят о ТЗ - то и такие мелочи оговаривают. Это - вопрос It-культуры.


Я 500-й раз напишу.

Ищем номера строк с максимальным числом 10-циферных совпадений - которое тоже нужно указать.

Это я писал уже 500 раз. 500.
Если вы сделаете это за 1 проход - в моём понимании - вы будите гений.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042207
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я их нахожу за 10 проходов.
2 проход последний раз занял 7 дней.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042209
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zyubr,

это все может изменится через пару минут

id=1 а строка 0, догадайся по датам...)))
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042211
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zyubr
короче, :)

1. есть первичный файл в 5000 строк
2. miltorg генерит из него второй файл в стопиццоттыщмиллионов строк, где каждая строчка описывает совпадение 2 каких-либо строк первоначального файла, но не менее 10 (или 9?) чисел в строке, чтобы совпадало
там же указываются номера этих строк
3. закащщику нужен вообще третий файл, где указываются только самые частые совпадения, с их количеством

видимо, так ))


Зачем выдумывать? Я ведь выложил код первой обработки. И код второй обработки - с комментариями.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042215
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

А зачем смотреть мои промежуточные результаты? - Выкладывайте свои. И тогда вам всё сразу станет ясно и понятно.

Мои результаты - это вообще просто так.
Но люди не понимают что строка может быть нулевой.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042216
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
zyubr,

это все может изменится через пару минут

id=1 а строка 0, догадайся по датам...)))


:)) можно насчитать как угодно, а потом даты подтянуть из первоначального файла и финально подправить с 0 или с 1, или как там уже будет верно в будущем :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042217
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Это ведь не сложно? Ты бы избавил мир от лишних вопросов. И кстати. Есть система нумерации порядковых
номеров принятая в С++/Java. Она начинается с нуля. И есть система Pascal. Она идет с единицы. Это пустяк.
Но вообще когда говорят о ТЗ - то и такие мелочи оговаривают. Это - вопрос It-культуры.


Какая культура? - это промежуточный, никому не нужный результат.

Нельзя блин показывать недоделанную работу - нельзя.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042218
zyubr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg

Зачем выдумывать? Я ведь выложил код первой обработки. И код второй обработки - с комментариями.


там такая жесточайшая путаница во всех предыдущих темах/комментариях...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042225
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zyubr,

???? Вы первый раз на форуме?
Длинные темы нужно читать с конца
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042227
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял что решение мне никто тут не подкинет. Не за деньги ни без. А жаль.
----------------

Я верю в БД. Поэтому начну с того, что засуну всё в БД.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042228
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton
пропущено...

Нет мне не сложно понять. Мне лень делать гипотезы и их проверять. Ты мог-бы просто сделать одолжение
и описать что входные данные - текстовый файл такого-то формата? С датаи или без дат.

Выходной файл - отчот тоже текстового формата с такими-то полями.

Это ведь не сложно? Ты бы избавил мир от лишних вопросов. И кстати. Есть система нумерации порядковых
номеров принятая в С++/Java. Она начинается с нуля. И есть система Pascal. Она идет с единицы. Это пустяк.
Но вообще когда говорят о ТЗ - то и такие мелочи оговаривают. Это - вопрос It-культуры.


Я 500-й раз напишу.

Ищем номера строк с максимальным числом 10-циферных совпадений - которое тоже нужно указать.

Я не понимаю эту фразу. Так с максимальным? Или с 10 циферным? Или где >= 10 ?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042243
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

все 10 , даже те что входят в >10
там где 11 и т.д. совпадений - нужно тоже учитывать комбинации из 10-ти
то есть если попадется макс из 11 совпадений, то ответом будет 11 комбинаций по 10 чисел из 11 совпавших
допустим совпало 11 чисел
1 2 3 4 5 6 7 8 9 10 11 - 5раз
значит ответ
Код: plaintext
1.
2.
3.
  2 3 4 5 6 7 8 9 10 11 - 5раз
1   3 4 5 6 7 8 9 10 11 - 5раз
1 2   4 5 6 7 8 9 10 11 - 5раз
1 2 3   5 6 7 8 9 10 11 - 5раз
и т.д.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042244
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Ого! Вы поняли это!!!
Всего то месяц прошёл.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042246
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наполняем БД. Код:

Код: 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.
#!/usr/bin/perl

$t = time();

require "./baza.pl";

$dbh->do("SET autocommit=0");


$ot = '.';
$isx = 'miltbase.txt';
$tabBD = 'n10tn0';

$dbh->do("DROP TABLE $tabBD");

$dbh->do("CREATE TABLE $tabBD
(
id int(11) PRIMARY KEY auto_increment,


d0 VARCHAR(100),
myData1 VARCHAR(12)


)");



open D, "$ot/$isx";
@u = <D>;
close D;

$kolStr = $#u;


for $str (0..$kolStr){
  
  $u[$str] =~ s/[\r\n]//g;
  
  #print $u[$str];
  print $str;
	
	($d, $dn) = split (/\t/, $u[$str]);
  
$dbh->do("INSERT INTO $tabBD VALUES (null, '$dn', '$d')");

print "\n";
}

$dbh->do("COMMIT");
$dbh->disconnect;

$t = (time()-$t)/60;
print "Прошло ";
printf('%0.2f', $t);
print " min";
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042248
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Первые строки - это недоделанная работа!



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
mysql> select * from n10tn0 limit 10;
+----+-------------------------------------------------------------+------------+
| id | d0                                                          | myData1    |
+----+-------------------------------------------------------------+------------+
|  1 | 13 14 15 17 21 26 29 31 32 34 38 39 40 42 44 51 60 63 67 76 | 31.05.2007 |
|  2 | 2 9 13 14 15 24 27 32 33 41 48 50 52 54 61 62 63 65 67 73   | 01.06.2007 |
|  3 | 2 4 5 10 15 18 21 31 32 37 39 47 49 52 55 60 63 66 68 71    | 02.06.2007 |
|  4 | 2 9 12 18 21 25 27 29 36 39 40 46 50 53 56 61 64 68 69 77   | 03.06.2007 |
|  5 | 2 10 12 17 19 20 26 30 32 40 45 50 55 62 69 70 72 73 77 79  | 04.06.2007 |
|  6 | 1 3 4 7 18 19 23 27 33 35 38 46 50 55 56 57 60 63 76 79     | 05.06.2007 |
|  7 | 10 12 24 27 34 37 38 41 46 47 52 53 56 58 59 62 64 66 70 77 | 06.06.2007 |
|  8 | 1 7 9 10 12 14 16 21 22 26 30 32 34 41 43 47 49 50 65 79    | 07.06.2007 |
|  9 | 5 6 7 15 17 21 23 25 26 36 41 48 54 55 57 59 65 67 74 79    | 08.06.2007 |
| 10 | 2 5 8 16 19 22 23 28 35 40 47 48 57 65 66 67 68 70 74 76    | 09.06.2007 |
+----+-------------------------------------------------------------+------------+
10 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042249
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

едрить мадрить)
не остри, все тут понимают в меру твоего объяснения.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042252
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Alex_Ustinov,

Ого! Вы поняли это!!!
Всего то месяц прошёл.
лишь бы до вас дошло -
Alex_Ustinov
в меню сообщения есть кнопка ДОПОЛН. там есть ТЭГ spoiler
"простыни" можно прятать под этот ТЭГ
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042270
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Первый проход. Код:

Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
#!/usr/bin/perl

$t = time();

require "./baza.pl";

$tab0 = 'n10tn0';

$tab1 = 'n10tn1';

$sovpadenij = 10;

$dbh->do("SET autocommit=0");

$dbh->do("DROP TABLE $tab1");

$dbh->do("CREATE TABLE $tab1
(
id int(11) PRIMARY KEY auto_increment,
d1 VARCHAR(100),
str VARCHAR(50),
sovpalo int(3)
)");


$s = "SELECT * FROM $tab0 LIMIT 1";
$sth = $dbh->prepare($s);
$sth->execute;

while (@r = $sth->fetchrow_array){
  
  @a = split / /, $r[1];

  print "$r[0]\n";


  $s2 = "SELECT * FROM $tab0";
  $sth2 = $dbh->prepare($s2);
  $sth2->execute;
  while (@r2 = $sth2->fetchrow_array){
    next if $r2[0] <= $r[0];
        
    @b = (); %isect = (); %inion = ();

    @b = split / /, $r2[1];

    #print @a;print "\n";
    #print @b;print "\n";


    for $e (@a, @b) {$inion{$e}++ && $isect{$e}++;}

    @isect = keys %isect;

    $is = scalar(@isect);

    if($is >= $sovpadenij){
      $r = join('_', sort {$a<=>$b} @isect );
      
      $dbh->do("INSERT INTO $tab1 VALUES (null, '$r', '$r[0]-$r2[0]', $is)");

    }
    
    #print "$r2[0]\n";
     

    }
  }

$dbh->do("COMMIT");
   

$sth->finish;
$sth2->finish;
$dbh->disconnect;

$t = (time()-$t)/60;
print "Прошло ";
printf('%0.2f', $t);
print " min";
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042271
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Первые 10 строк. Недоделано!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
mysql> select * from n10tn1 limit 10;
+----+----------------------------------------+--------+---------+
| id | d1                                     | str    | sovpalo |
+----+----------------------------------------+--------+---------+
|  1 | 13_15_17_29_31_32_34_38_51_60_76       | 1-25   |      11 |
|  2 | 13_14_15_17_21_26_29_31_34_40_51       | 1-269  |      11 |
|  3 | 13_14_15_26_38_40_51_60_67_76          | 1-347  |      10 |
|  4 | 15_29_32_34_39_42_44_51_60_63_67       | 1-373  |      11 |
|  5 | 17_21_26_31_34_40_42_60_63_67          | 1-398  |      10 |
|  6 | 14_15_17_21_29_34_38_40_51_63_67       | 1-498  |      11 |
|  7 | 26_32_38_40_42_44_51_63_67_76          | 1-856  |      10 |
|  8 | 13_17_21_26_29_31_32_34_60_67_76       | 1-1013 |      11 |
|  9 | 13_14_15_21_26_29_38_42_44_51_60_63_76 | 1-1037 |      13 |
| 10 | 14_17_26_29_31_34_38_42_63_76          | 1-1350 |      10 |
+----+----------------------------------------+--------+---------+
10 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042273
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

И считало оно 100 строк - 1,23 мин
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042276
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нужно - 15 сек.

Как бы объединить эти 2 запроса в один?

Не про это ли писали в самой первой теме? - Но меня тогда скорость устраивала.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042296
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня пока - баг. Появляются числа больше 100. Исправлю - потом покажу репорт.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042308
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экономил на спичках. Вместо битсета - регистры и целые числа. Вечная спешка...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042332
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Это нормальное решение:

22261538

Но оно не даёт цифры-совпадения.
Их можно от туда вытащить?
А может они и не нужны на промежуточных этапах?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042333
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Хм! Ведь совпавшие строки то оно даёт.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042341
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему надо переписать
miltorg
Alex_Ustinov, miltorg,

Ого! Вы поняли это!!!
Всего то месяц прошёл.
у вас прогресс
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042343
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал фун-ю StrToBit (в Binary(100))
и обратную BitToStr() которая ищет пересечение единичек в (Bin1 & Bin2)

О чем уже сказано 55км пути назад
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042345
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя с Binary немного другой подсчет, но это не мешает использовать BIT_COUNT
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042347
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я откачусь назад. Сделаю медленно но правильно. Через BitSet. А уж потом если будет все корректно - тогда оптимизирую
по скорости. Битовые операции в Java не сложны. Только я про дополнительный код забываю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042353
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Я сделал фун-ю StrToBit (в Binary(100))
и обратную BitToStr() которая ищет пересечение единичек в (Bin1 & Bin2)
* которая из единичек "делает числа"

О чем уже сказано 55км пути назад
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042369
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Вот взяли бы и гордо выложили бы решение для 10 цифр-совпадений.
А так... - одни словеса.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042371
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

это не ответ!!!)))
id covpalo cifri kol-vo3333-3334-3335-3336 14.07.2016 -15.07.2016 -16.07.2016 -17.07.2016 4 1-2-3-4-5-6-7-8-9-10-11-12 12.....

словеса у вас, с ненужными проходными выкладками
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042397
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не ответ!!!
id covpalo cifri kol-vo3333-3334-3335-3336-3337 14.07.2016 -15.07.2016 -16.07.2016 -17.07.2016-18.07.2016 5 1-2-3-4-5-6-7-8-9-10-11-12 12
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042400
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, ты не поверишь! Но я грешным делом тоже самое дёрнулся делать.
У меня даже в закоментированном коде оно так и осталось.

Потом смотрю - Прохорыч просто пары учитывает. А кросс-парную группировку
ему вроде как не надо.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042419
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Alex_Ustinov, ты не поверишь! Но я грешным делом тоже самое дёрнулся делать.
У меня даже в закоментированном коде оно так и осталось.

Потом смотрю - Прохорыч просто пары учитывает. А кросс-парную группировку
ему вроде как не надо.

еще вчера надо было
miltorg
Если кто то не читал предыдущею тему:

Есть файл - в каждой строке 20 чисел, через пробел, от 1 до 99 включительно.
Около 5 тысяч строк.

Нужно получить совпадения по 9 чисел. Например

5_7_8_27_39_50_58_62_70 - комбинация есть в 5 строках - в 1, 28, 1004, 4300, 4444,
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042420
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ну это логично
побитово решение практически одно,
допустим ищем 11 вхождений, получили (беру строку 3333 для примера)
ТАБ1
id1 id2 cifri kol-vo3333 3334 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 153333 3335 1 2 3 4 5 6 7 8 9 10 11 12 13 14 143333 3336 1 2 3 4 5 6 7 8 9 10 11 12 13 133333 3337 1 2 3 4 5 6 7 8 9 10 11 12 123333 3667 2 3 4 9 10 12 13 14 18 19 20 11

maytonПотом смотрю - Прохорыч просто пары учитывает. А кросс-парную группировку
ему вроде как не надо. ему это как раз и надо, т.е. из ТАБ1
свернуть каким то образом в
GROUP kolvo kombi3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042421
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1, ну вот-же Прохорыч приводит свой отчет. У него - список пар. Первая и двадцать пятая строка. 11 общих цифр.

Код: sql
1.
2.
3.
4.
5.
+----+----------------------------------------+--------+---------+
| id | d1                                     | str    | sovpalo |
+----+----------------------------------------+--------+---------+
|  1 | 13_15_17_29_31_32_34_38_51_60_76       | 1-25   |      11 |
|  2 | 13_14_15_17_21_26_29_31_34_40_51       | 1-269  |      11 |
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042424
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

это первый проход
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042430
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пф... какой еще к чорту проход? Кто вообще так задания ставит. Вот посмотрите как я поставил задачу 22268087
в топике Программирования. В олимпиадном стиле. Есть Input . Output . И точка. И все поняли и стали кодить.

А здесь - седьмая вода на киселе... Зачем давать ценные указания. Программист сам знает КАК сделать. Скажите что на выходе.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042436
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

через несколько дней увидим что на выходе
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042447
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему вообще не разобрать все числа в строки таблицы, например такой date, colid int, val int

А затем простой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT d1.date,d2.date, count(1)
FROM Data d1
INNER JOIN Data d2 on d2.val=d1.val
  AND d2.date <> d1.date
GROUP BY d1.date,d2.date 
having count(1) = 10



?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042450
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__
А почему вообще не разобрать все числа в строки таблицы, например такой date, colid int, val int

А затем простой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT d1.date,d2.date, count(1)
FROM Data d1
INNER JOIN Data d2 on d2.val=d1.val
  AND d2.date <> d1.date
GROUP BY d1.date,d2.date 
having count(1) = 10



?


Результат:
Код: plaintext
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.
2007-05-31 00:00:00	2007-06-24 00:00:00	11	32,34,17,31,60,76,13,15,51,38,29
2007-05-31 00:00:00	2008-02-23 00:00:00	11	14,13,17,31,34,29,15,40,26,21,51
2007-05-31 00:00:00	2008-05-11 00:00:00	10	60,13,76,14,40,38,26,15,67,51
2007-05-31 00:00:00	2008-06-06 00:00:00	11	34,32,60,63,29,15,44,42,39,51,67
2007-05-31 00:00:00	2008-07-01 00:00:00	10	34,31,17,60,63,40,26,42,21,67
2007-05-31 00:00:00	2008-10-09 00:00:00	11	14,63,34,17,29,15,40,38,21,51,67
2007-05-31 00:00:00	2009-10-02 00:00:00	10	32,76,63,44,42,40,38,26,51,67
2007-05-31 00:00:00	2010-03-08 00:00:00	11	76,13,60,17,31,32,34,26,29,21,67
2007-05-31 00:00:00	2010-04-01 00:00:00	13	14,60,63,76,13,29,15,42,44,26,38,21,51
2007-05-31 00:00:00	2011-02-08 00:00:00	10	14,34,31,17,63,76,29,42,26,38
2007-05-31 00:00:00	2013-05-30 00:00:00	10	32,17,31,60,76,39,38,26,21,51
2007-05-31 00:00:00	2014-02-01 00:00:00	10	17,34,63,14,15,44,40,26,38,51
2007-05-31 00:00:00	2014-02-12 00:00:00	10	34,14,21,38,39,40,15,42,67,51
2007-05-31 00:00:00	2014-06-29 00:00:00	10	13,60,63,32,14,15,42,40,39,26
2007-05-31 00:00:00	2014-11-14 00:00:00	10	60,13,76,31,17,34,32,15,39,21
2007-05-31 00:00:00	2014-11-28 00:00:00	10	63,13,76,17,14,44,15,26,67,51
2007-05-31 00:00:00	2015-06-14 00:00:00	10	63,13,32,31,42,29,38,39,21,67
2007-05-31 00:00:00	2016-01-30 00:00:00	10	13,60,17,31,38,39,40,44,42,29
2007-05-31 00:00:00	2016-04-23 00:00:00	10	32,34,31,76,13,63,14,44,29,38
2007-05-31 00:00:00	2017-03-01 00:00:00	11	32,31,17,63,60,13,76,44,29,15,21
2007-05-31 00:00:00	2017-03-23 00:00:00	10	31,32,60,63,13,40,26,15,44,51
2007-05-31 00:00:00	2017-08-14 00:00:00	11	31,17,60,14,44,42,29,38,21,67,51
2007-05-31 00:00:00	2017-09-12 00:00:00	11	60,14,39,40,38,26,42,15,29,51,67
2007-05-31 00:00:00	2017-09-13 00:00:00	10	14,63,13,76,34,17,15,42,44,21
2007-05-31 00:00:00	2017-09-19 00:00:00	10	31,17,63,76,42,26,39,21,51,67
2007-05-31 00:00:00	2018-06-30 00:00:00	10	63,60,14,42,44,15,29,40,67,51
2007-05-31 00:00:00	2018-09-20 00:00:00	10	13,76,60,31,14,38,42,29,21,67
2007-05-31 00:00:00	2019-01-14 00:00:00	10	31,34,32,60,13,38,26,39,29,15
2007-05-31 00:00:00	2019-01-30 00:00:00	10	60,63,17,32,14,21,26,15,29,51
2007-05-31 00:00:00	2019-04-21 00:00:00	10	13,76,31,32,34,26,38,21,51,67
2007-05-31 00:00:00	2020-03-15 00:00:00	10	32,13,60,63,15,42,44,26,38,51

Скрипт:
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042455
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT t1.Dt, t2.Dt, Cnt=COUNT(1), STRING_AGG(t1.val, ',')
FROM #Temp t1
INNER JOIN #Temp t2 ON t2.val = t1.val
  AND t2.Dt > t1.Dt
--where t1.Dt = '2007-05-31'
GROUP BY t1.Dt, t2.Dt
having count(1) > 9
order by 3 desc,1,2



Убрал двойников, запрос считает за минуту.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042458
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у хадупа в комбинации по 10 победили 66 строк с 5 совпадениями

[1, 2, 3, 4, 5, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 9, 12] ----- есть в 14.07.2016 17.07.2016 15.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения

...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042459
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,


так и есть 10 из 12 комбинаций = 66

1-2-3-4-5-6-7-8-9-10-11-12
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042468
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
это не ответ!!!
id covpalo cifri kol-vo3333-3334-3335-3336-3337 14.07.2016 -15.07.2016 -16.07.2016 -17.07.2016-18.07.2016 5 1-2-3-4-5-6-7-8-9-10-11-12 12


Нет. В ответе 10 цифр:

1-2-3-4-5-6-7-8-9-10
---------------

Нет. В ответе несколько... - ну например 20, максимальных совпадений. - У вас одно.

Поймите. Когда я покажу ваше решение заказчику - он спросит тоже самое и деньги мы за это списать не получится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042469
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Alex_Ustinov, ты не поверишь! Но я грешным делом тоже самое дёрнулся делать.
У меня даже в закоментированном коде оно так и осталось.

Потом смотрю - Прохорыч просто пары учитывает. А кросс-парную группировку
ему вроде как не надо.


Если вы уже перешли на кликухи - я Андрон. - Армейская кликуха.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042471
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Это ответ или первый проход?

Если ответ - цифр должно быть 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042472
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Даты не нужно таскать. Я ведь просил - строки. Номера строк.

Сравнивать удобней.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042473
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

Зачем вы начали прикручивать даты?

В задании - номера строк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042474
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

Во! Уважуха.
Наконец то хоть один готовый скрипт.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042475
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
H5N1,

Это ответ или первый проход?

Если ответ - цифр должно быть 10


это финальный ответ. мне лень вникать, что там у вас сменилось в тз, я решил вот эту задачу для 10 цифр

miltorg
Если кто то не читал предыдущею тему:

Есть файл - в каждой строке 20 чисел, через пробел, от 1 до 99 включительно.
Около 5 тысяч строк.

Нужно получить совпадения по 9 чисел. Например

5_7_8_27_39_50_58_62_70 - комбинация есть в 5 строках - в 1, 28, 1004, 4300, 4444,
miltorg
Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042478
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

У меня ваш скрипт не запустился, к сожалению:

mysql> source /media/miltorg/712B9BD2598A5E26/uuu/n3/u/SQLQuery24.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'drop table

declare @t xml = '<root>
<a date="31.05.2007" s="13 14 15 17 21 26 ' at line 2
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXEC sp_xml_preparedocument @docHandle OUTPUT, @t' at line 1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM OPENXML(@docHandle, N'/root/a',2)
WITH (d varchar(10) '@date', s varchar(10' at line 3
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into
select try_convert(smalldatetime,t.d,104), v.value
from
cross appl' at line 2
mysql>
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042479
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
miltorg
H5N1,

Это ответ или первый проход?

Если ответ - цифр должно быть 10


это финальный ответ. мне лень вникать, что там у вас сменилось в тз, я решил вот эту задачу для 10 цифр

miltorg
Если кто то не читал предыдущею тему:

Есть файл - в каждой строке 20 чисел, через пробел, от 1 до 99 включительно.
Около 5 тысяч строк.

Нужно получить совпадения по 9 чисел. Например

5_7_8_27_39_50_58_62_70 - комбинация есть в 5 строках - в 1, 28, 1004, 4300, 4444,
miltorg
Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения


Упс. Я что-то не туда посмотрел. Извиняюсь.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042480
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,
Отлично. Супер. Спасибо.
Присылайте скрипт. Или как?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042481
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Вот ведь какая штука.

Хромосомы группируются в кластеры.

Но сами кластеры тоже образуют иерархию.

Это надо показать в отчёте?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042482
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хм. Вот ведь какая штука.

Хромосомы группируются в кластеры.

Но сами кластеры тоже образуют иерархию.

Это надо показать в отчёте?

miltorg
Пример ответа:

1_2_3_4_5_6_7_8_9_10 ------ есть в 105, 200, 500, 5000 строках ------- 4 строки совпадения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042484
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Отлично. Супер. Спасибо.
Присылайте скрипт. Или как?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042486
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Спасибо.
Но. Эти строки которые вы нашли я внёс искусственно.
Как бы нам протестировать ваш скрипт более надёжно?

------------------
Ведь это здорово! Первое решение - кроме моего - за месяц мучений местных умников и умниц - которые задание до сих пор не поняли.
Да. Забыл. А считает то сколько?
10-ку я делал за сутки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042509
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
H5N1,

Спасибо.
Но. Эти строки которые вы нашли я внёс искусственно.
Как бы нам протестировать ваш скрипт более надёжно?

------------------
Ведь это здорово! Первое решение - кроме моего - за месяц мучений местных умников и умниц - которые задание до сих пор не поняли.
Да. Забыл. А считает то сколько?
10-ку я делал за сутки.


на десктопе посчиталось за 2.5 часа, но похоже из-за того что я не настоящий хадуп юзаю, а заглушку от него, все в одном потоке считается. на след недели попробую в виртуалке запустить, в параллель думаю должно в час укладываться.
для 9 комбинаций где то 2.2 часа. снова максимум 5 вхожений. результат:


[1, 2, 3, 4, 5, 6, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 10, 11] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 10] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 12] ----- есть в 14.07.2016 16.07.2016 17.07.2016 15.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 9] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 11] ----- есть в 17.07.2016 15.07.2016 16.07.2016 14.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 10, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 10] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 12] ----- есть в 15.07.2016 17.07.2016 16.07.2016 14.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 11] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 12] ----- есть в 15.07.2016 17.07.2016 14.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 12] ----- есть в 17.07.2016 14.07.2016 15.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 6, 7, 8, 9, 10, 11, 12] ----- есть в 14.07.2016 15.07.2016 16.07.2016 17.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 12] ----- есть в 17.07.2016 14.07.2016 15.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[4, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 8, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 10] ----- есть в 18.07.2016 14.07.2016 15.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 7, 9, 12] ----- есть в 15.07.2016 17.07.2016 14.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 10, 11] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 8, 9, 11] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 6, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 10] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 8, 9, 12] ----- есть в 15.07.2016 14.07.2016 17.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 7, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 5, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 4, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 8, 9, 12] ----- есть в 16.07.2016 15.07.2016 17.07.2016 14.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 5, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 3, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 17.07.2016 15.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 5, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 4, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 2, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 17.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 10, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 10] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 8, 9, 12] ----- есть в 17.07.2016 15.07.2016 14.07.2016 16.07.2016 18.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 17.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 7, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 6, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 5, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 4, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 16.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 16.07.2016 14.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 15.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[1, 3, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 16.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[1, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 17.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 11, 12] ----- есть в 18.07.2016 16.07.2016 14.07.2016 17.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 8, 9, 11] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 7, 9, 10, 12] ----- есть в 18.07.2016 14.07.2016 17.07.2016 16.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 8, 10, 11, 12] ----- есть в 18.07.2016 14.07.2016 15.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 8, 9, 10, 11] ----- есть в 18.07.2016 14.07.2016 16.07.2016 15.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 6, 8, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 17.07.2016 16.07.2016 14.07.2016 15.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 5, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 4, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 3, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 8, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 14.07.2016 15.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 8, 9, 10, 11] ----- есть в 18.07.2016 15.07.2016 16.07.2016 14.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 7, 8, 9, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 5, 6, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 17.07.2016 15.07.2016 14.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[2, 4, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 16.07.2016 15.07.2016 17.07.2016 14.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 8, 9, 10, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 6, 7, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 17.07.2016 16.07.2016 cтроках ---- 5 cтроки совпадения
[3, 4, 5, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения
[3, 5, 6, 7, 8, 9, 10, 11, 12] ----- есть в 18.07.2016 15.07.2016 14.07.2016 16.07.2016 17.07.2016 cтроках ---- 5 cтроки совпадения



теперь попробую 9,10,11,12,13 в один проход и отфильтровать победителей с более 5 пападаний
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042530
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

то есть кода не будет?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042536
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Вы внесите последней строкой в исходник что либо ещё или распечатайте повторы которые и меньше 5 совпадений.
Потому что получается что вы находите только мои, искусственно внесённые строки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042539
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

А чего я радуюсь? Это вы развернули свой Хадуп.
Блин. Опять нет никакого решения. Получается.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042541
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Нет. В ответе несколько... - ну например 20, максимальных совпадений. - У вас одно.
Поймите. Когда я покажу ваше решение заказчику - он спросит тоже самое и деньги мы за это списать не получится.

ЭТО НЕ ОТВЕТ
3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12
данное решение получено после первого "прохода" и группировки.
Самое интересное - это решение лежало на виду еще в прошлом топике, оставалось правильно сгруппировать
Даже не помню сколько это считалось - 1 или 2 мин
а заказчику вы покАжите так, как ему надо
я за вас думать не собираюсь и никому не советую
как уже писалось 100км пути назад - осталось разложить по 10 из 12 полученных чисел, путем последовательного "вычеркивания двух чисел", сделайте, покажИте как вы умеете Цикловать.
Я за то чтобы вы сами приложили голову а не попрошайничали решение
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042543
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Для первого прохода - хорошо, но где остальные совпадения?
Приведите хоть пару десятков.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042548
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

У меня стойкое ощущение, что вы специально меня не слушаете.

В прошлом топике я обсчитывал 10 чисел - у меня всё получалось в приемлемые для меня сроки - 1 день пыхтения компа
Там никакой задачи по оптимизации и не ставилось.
Там я спрашивал - Как проверить результат?

Потом я стал обсчитывать своим методом 9 чисел ... - неделя непрерывной работы компьютера... - это много... - возникла эта новая тема про оптимизацию.

Что не так?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042549
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Немного изменил входной файл. Так он должен стать более интересным:
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042550
Фотография 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.
    3 4 5 6 7 8 9 10 11 12
1    4 5 6 7 8 9 10 11 12
1 2    5 6 7 8 9 10 11 12
1 2 3     6 7 8 9 10 11 12
1 2 3 4     7 8 9 10 11 12
1 2 3 4 5     8 9 10 11 12

а остальные 60 я доверяю сделать самому) как вы любите, циклами
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042551
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton
Alex_Ustinov, ты не поверишь! Но я грешным делом тоже самое дёрнулся делать.
У меня даже в закоментированном коде оно так и осталось.

Потом смотрю - Прохорыч просто пары учитывает. А кросс-парную группировку
ему вроде как не надо.


Если вы уже перешли на кликухи - я Андрон. - Армейская кликуха.

Замётано, Андрон.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042553
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg,

Немного изменил входной файл. Так он должен стать более интересным:
ничего интересного
для milbase1
решение
str XXX kombi2981- 472 - 3010 3 10 22 36 37 46 54 59 64 74 783332 -3333 -3334 3 3 5 7 9 11 17 20 22 23 243335 - 3336 -3337 3 1 2 3 4 5 6 7 8 9 10 11 12182- 1262- 3640 3 15 19 20 38 41 43 51 54 66 74234 -2051 - 4517 3 4 7 8 30 31 44 45 49 55 67

для получения ответа развернуть все kombi в комбинации по 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042555
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

затраченное время
7 сек заливка
~ 2мин перетрубация в binary
итоговый запрос < 1 сек
для ответа оставшуюся часть с комбинаторикой оставлю ТС
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042557
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Alex_Ustinov,

затраченное время
7 сек заливка
~ 2мин перетрубация в binary
итоговый запрос < 1 сек
для ответа оставшуюся часть с комбинаторикой оставлю ТС
пример комбинаторики в топике mayton'a
Генерация сочетаний из N по K
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042559
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
    3 4 5 6 7 8 9 10 11 12
1    4 5 6 7 8 9 10 11 12
1 2    5 6 7 8 9 10 11 12
1 2 3     6 7 8 9 10 11 12
1 2 3 4     7 8 9 10 11 12
1 2 3 4 5     8 9 10 11 12

а остальные 60 я доверяю сделать самому) как вы любите, циклами

угу.
Только у меня на 9-ке получилось 300 тысяч по 10 совпадений. 300 тысяч
Я не буду с вами спорить про это. Я вам тысячу раз про это рассказывал
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042561
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

у вас есть код на первый проход?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042563
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov

получено решение из 12 чисел
циклуйте вычеркивая по 2 числа ИЗ 12 получите 12!/(12-10)!10! = 66 комбинаций

халтура
в файле заказчика никто не обещает, что данные будут сгенерированны путем предсказуемых перестановок

miltorg

Вы внесите последней строкой в исходник что либо ещё или распечатайте повторы которые и меньше 5 совпадений.
Потому что получается что вы находите только мои, искусственно внесённые строки.

слишком длинная простыня. для девяток там на 250 мб лог, для десяток 40, ну если убедится, вот
https://filebin.net/ivxe745t645ivdx9/for10.zip?t=3z1kqzyw

miltorg
H5N1,

А чего я радуюсь? Это вы развернули свой Хадуп.
Блин. Опять нет никакого решения. Получается.

развернуть хадуп=распаковать 5 мб папку и прописать переменную среды.
там другая сложность, почему-то не запускается с командной строки, только с IDE и в процессе жрет 120 гб в темп папке :)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042564
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

я не спорю ни оч ем, только факты.
авторна 9-ке получилось 300 тысяч по 10 совпадений.так а что вы хотели? сделайте скрипт, не на горбу мешки таскать.
допустим процедуру в MySQL , пусть сливает строки в итоговую таблицу как надо для ответа

--Я вам тысячу раз про это рассказывал.
не надо ничего рассказывать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042565
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorg
miltorg,

Немного изменил входной файл. Так он должен стать более интересным:
ничего интересного
для milbase1
решение
str XXX kombi2981- 472 - 3010 3 10 22 36 37 46 54 59 64 74 783332 -3333 -3334 3 3 5 7 9 11 17 20 22 23 243335 - 3336 -3337 3 1 2 3 4 5 6 7 8 9 10 11 12182- 1262- 3640 3 15 19 20 38 41 43 51 54 66 74234 -2051 - 4517 3 4 7 8 30 31 44 45 49 55 67


для получения ответа развернуть все kombi в комбинации по 10

3332 -3333 -3334, 3, 3 5 7 9 11 17 20 22 23 24

3338 строка ещё должна была совпасть.
У вас её нет вообще.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042566
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorgу вас есть код на первый проход?
а чем же я считаю? пальцем?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042567
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorg
miltorg,

Немного изменил входной файл. Так он должен стать более интересным:
ничего интересного
для milbase1
решение
str XXX kombi2981- 472 - 3010 3 10 22 36 37 46 54 59 64 74 783332 -3333 -3334 3 3 5 7 9 11 17 20 22 23 243335 - 3336 -3337 3 1 2 3 4 5 6 7 8 9 10 11 12182- 1262- 3640 3 15 19 20 38 41 43 51 54 66 74234 -2051 - 4517 3 4 7 8 30 31 44 45 49 55 67


для получения ответа развернуть все kombi в комбинации по 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042569
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
3338 строка ещё должна была совпасть.
У вас её нет вообще.отлично, вы начали думать
автор3335 - 3336 -3337, 3, 1 2 3 4 5 6 7 8 9 10 11 12

12 совпадений, а не 10отлично, читаем дальше
Alex_Ustinovдля получения ответа развернуть все kombi в комбинации по 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042570
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorgу вас есть код на первый проход?

а чем же я считаю? пальцем?

Ок. ОК.
До свидания
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042572
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
__Avenger__,

У меня ваш скрипт не запустился, к сожалению:

mysql> source /media/miltorg/712B9BD2598A5E26/uuu/n3/u/SQLQuery24.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'drop table

declare @t xml = '<root>
<a date="31.05.2007" s="13 14 15 17 21 26 ' at line 2
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXEC sp_xml_preparedocument @docHandle OUTPUT, @t' at line 1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM OPENXML(@docHandle, N'/root/a',2)
WITH (d varchar(10) '@date', s varchar(10' at line 3
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into
select try_convert(smalldatetime,t.d,104), v.value
from
cross appl' at line 2
mysql>


Итак. осталось только это решение. И решение которое я почти написал сам
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042574
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос. Являются ли исходные хромосомы (5000 штук) уникальными по заданию? Это может повлиять на смысл
подсчета количества штук в кластере.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042575
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мозги напрягли?
отлично
РЕШЕНИЕ-"потеряшка"
3332-3333-3334-3338 4 3 5 7 9 11 17 20 22 23 24
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042576
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Alex_Ustinov
пропущено...

а чем же я считаю? пальцем?


Ок. ОК.
До свидания
думайте, не останавливайтесь. Я вам готовое блюдо выкладывать не собираюсь
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042578
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

Мы ведь отбросили это Хайдуп решение потому что его не сможет Юзер администрировать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042581
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Если вы это у меня спрашиваете - то говорите по русски или дайте ссылку на ваши хромосомы и кластеры

Матрицы проходил. Сложение, перемножение. Хромосомы - нет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

Если вы это у меня спрашиваете - то говорите по русски или дайте ссылку на ваши хромосомы и кластеры

Матрицы проходил. Сложение, перемножение. Хромосомы - нет.

Прошу прощения. Чтоб задача была наполнена прикладным смыслом. Я ввожу (для себя названия).
Потому-что числа и векторы - это какое-то масло-маслянное. Представте что вам бухгалтер скажет
что в следующем месяце вы получите аж столько чисел.

Поэтому хромосома это такая штука.

Код: sql
1.
[ 13 14 15 17 21 26 29 31 32 34 38 39 40 42 44 51 60 63 67 76 ]



А кластер для нее это ее пересечение с другими хромосомами. Это те десятки и одинадцатки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042587
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg
__Avenger__,

У меня ваш скрипт не запустился, к сожалению:

mysql> source /media/miltorg/712B9BD2598A5E26/uuu/n3/u/SQLQuery24.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'drop table

declare @t xml = '<root>
<a date="31.05.2007" s="13 14 15 17 21 26 ' at line 2
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXEC sp_xml_preparedocument @docHandle OUTPUT, @t' at line 1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM OPENXML(@docHandle, N'/root/a',2)
WITH (d varchar(10) '@date', s varchar(10' at line 3
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into
select try_convert(smalldatetime,t.d,104), v.value
from
cross appl' at line 2
mysql>


Итак. осталось только это решение. И решение которое я почти написал сам


вроде говорит что версия не та
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042588
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Еще вопрос. Являются ли исходные хромосомы (5000 штук) уникальными по заданию? Это может повлиять на смысл
подсчета количества штук в кластере.


Да. Исходный файл - железобетонный и в нём ничего изменяться не будет.
Но каждый день будет приходить новая пачка строк.
Возможно, что когда то заказчик попросит выкинуть из расчётов часть совсем старых строк. Возможно
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042592
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg
пропущено...


Итак. осталось только это решение. И решение которое я почти написал сам


вроде говорит что версия не та


mysql --version
mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

У меня версия за январь этого года. Слишком новая?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042601
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
)))
обычная текущая версия
......>mysql --version
mysql Ver 8.0.23 for Win64 on x86_64 (MySQL Community Server - GPL)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042608
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вся беда в том что скрипт у __Avenger__, не MySQL
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042619
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Спасибо.
Значит нужно только писать самому.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042659
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрон. Ану зацени результат. Первая тыща центров кластеров.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042660
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще тоже самое но отсортированное по количеству хромосом в кластере.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042662
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И еще тоже самое но отсортированное по количеству хромосом в кластере.

по мне так лажа.
если это miltbase.txt, то в clusterDimenstions : 10 должно было попасть 66 хромосон с chromosomesInCluster : 5

https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332994&msg=22276120
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042663
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg,

Вам лучше всего будет переписать perl скрипт так чтобы он не вставлял миллион записей в $tab2, а хранил их в хеше прямо в памяти perl, потом проходил по тем, в которых насчитано больше одного и делал по ним отчёт.

Но это сложно написать без рабочего тестового стенда. Могу предложить решение чисто на MySQL, но его может глючить если где-то пробелы будут лишние или элементов будет не 20. И сложно эти ситуации обработать средствами именно SQL.

Код: sql
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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
create table miltbase1 (date varchar(32) not null, sequence varchar(255));

load data infile '/tmp/miltbase1.txt' into table miltbase1;

update miltbase1 set sequence = replace(sequence,'\r','');

mysql> select count(*) from miltbase1;
+----------+
| count(*) |
+----------+
|     5000 |
+----------+
1 row in set (0.00 sec)

mysql> select date from miltbase1 where sequence like '%3 5 7 9 11 17 20 22 23 24%';
+------------+
| date       |
+------------+
| 13.07.2016 |
| 14.07.2016 |
| 15.07.2016 |
| 19.07.2016 |
+------------+
4 rows in set (0.00 sec)

create table subsequence_lookup(start int);
insert into subsequence_lookup values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);

mysql> select * from miltbase1 where date = '13.07.2016';
+------------+---------------------------------------------------------+
| date       | sequence                                                |
+------------+---------------------------------------------------------+
| 13.07.2016 | 3 5 7 9 11 17 20 22 23 24 38 39 44 46 50 52 63 67 73 79 |
+------------+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select s.date, trim(substring(concat(' ',s.sequence,' '), char_length(substring_index(concat(' ',s.sequence,' '),
' ', sl.start))+1, char_length(substring_index(concat(' ',s.sequence,' '), ' ', sl.start+9))-
char_length(substring_index(concat(' ',s.sequence,' '),' ', sl.start)) ))
as subseq from miltbase1 as s cross join subsequence_lookup as sl where s.date = '13.07.2016';
+------------+----------------------------+
| date       | subseq                     |
+------------+----------------------------+
| 13.07.2016 | 3 5 7 9 11 17 20 22 23     |
| 13.07.2016 | 5 7 9 11 17 20 22 23 24    |
| 13.07.2016 | 7 9 11 17 20 22 23 24 38   |
| 13.07.2016 | 9 11 17 20 22 23 24 38 39  |
| 13.07.2016 | 11 17 20 22 23 24 38 39 44 |
| 13.07.2016 | 17 20 22 23 24 38 39 44 46 |
| 13.07.2016 | 20 22 23 24 38 39 44 46 50 |
| 13.07.2016 | 22 23 24 38 39 44 46 50 52 |
| 13.07.2016 | 23 24 38 39 44 46 50 52 63 |
| 13.07.2016 | 24 38 39 44 46 50 52 63 67 |
| 13.07.2016 | 38 39 44 46 50 52 63 67 73 |
| 13.07.2016 | 39 44 46 50 52 63 67 73 79 |
+------------+----------------------------+
12 rows in set (0.00 sec)

mysql> select group_concat(date), subseq, count(*) from ( select s.date, trim(substring(concat(' ',s.sequence,' '),
char_length(substring_index(concat(' ',s.sequence,' '), ' ', sl.start))+1, char_length(substring_index(
concat(' ',s.sequence,' '), ' ', sl.start+9))-char_length(substring_index(concat(' ',s.sequence,' '), ' ', sl.start)) ))
as subseq from miltbase1 as s cross join subsequence_lookup as sl ) as a
group by 2 having count(*) > 1 order by 3 desc;
+---------------------------------------------+----------------------------+----------+
| group_concat(date)                          | subseq                     | count(*) |
+---------------------------------------------+----------------------------+----------+
| 15.07.2016,14.07.2016,13.07.2016,19.07.2016 | 3 5 7 9 11 17 20 22 23     |        4 |
| 15.07.2016,14.07.2016,13.07.2016,19.07.2016 | 5 7 9 11 17 20 22 23 24    |        4 |
| 16.07.2016,18.07.2016,17.07.2016            | 1 2 3 4 5 6 7 8 9          |        3 |
| 18.07.2016,17.07.2016,16.07.2016            | 2 3 4 5 6 7 8 9 10         |        3 |
| 18.07.2016,17.07.2016,16.07.2016            | 3 4 5 6 7 8 9 10 11        |        3 |
| 18.07.2016,17.07.2016,16.07.2016            | 4 5 6 7 8 9 10 11 12       |        3 |
| 13.07.2016,19.07.2016                       | 11 17 20 22 23 24 38 39 44 |        2 |
| 13.07.2016,19.07.2016                       | 17 20 22 23 24 38 39 44 46 |        2 |
| 15.12.2010,25.02.2013                       | 19 21 23 24 27 29 33 34 41 |        2 |
| 13.07.2016,19.07.2016                       | 20 22 23 24 38 39 44 46 50 |        2 |
| 13.07.2016,19.07.2016                       | 22 23 24 38 39 44 46 50 52 |        2 |
| 20.12.2014,11.10.2019                       | 41 44 45 46 49 52 54 55 56 |        2 |
| 17.07.2016,16.07.2016                       | 5 6 7 8 9 10 11 12 13      |        2 |
| 19.07.2016,13.07.2016                       | 7 9 11 17 20 22 23 24 38   |        2 |
| 19.07.2016,13.07.2016                       | 9 11 17 20 22 23 24 38 39  |        2 |
+---------------------------------------------+----------------------------+----------+
15 rows in set (0.25 sec)


-- и для случая подпоследовательностей из 10 элементов

mysql> select group_concat(date), subseq, count(*) from ( select s.date, trim(substring(concat(' ',s.sequence,' '),
char_length(substring_index(concat(' ',s.sequence,' '), ' ', sl.start))+1, char_length(substring_index(
concat(' ',s.sequence,' '), ' ', sl.start+10))-char_length(substring_index(concat(' ',s.sequence,' '), ' ', sl.start))
)) as subseq from miltbase1 as s cross join subsequence_lookup as sl where sl.start < 12 ) as a
group by 2 having count(*) > 1 order by 3 desc;
+---------------------------------------------+-------------------------------+----------+
| group_concat(date)                          | subseq                        | count(*) |
+---------------------------------------------+-------------------------------+----------+
| 19.07.2016,15.07.2016,14.07.2016,13.07.2016 | 3 5 7 9 11 17 20 22 23 24     |        4 |
| 18.07.2016,17.07.2016,16.07.2016            | 1 2 3 4 5 6 7 8 9 10          |        3 |
| 16.07.2016,18.07.2016,17.07.2016            | 2 3 4 5 6 7 8 9 10 11         |        3 |
| 16.07.2016,18.07.2016,17.07.2016            | 3 4 5 6 7 8 9 10 11 12        |        3 |
| 13.07.2016,19.07.2016                       | 11 17 20 22 23 24 38 39 44 46 |        2 |
| 13.07.2016,19.07.2016                       | 17 20 22 23 24 38 39 44 46 50 |        2 |
| 19.07.2016,13.07.2016                       | 20 22 23 24 38 39 44 46 50 52 |        2 |
| 17.07.2016,16.07.2016                       | 4 5 6 7 8 9 10 11 12 13       |        2 |
| 19.07.2016,13.07.2016                       | 5 7 9 11 17 20 22 23 24 38    |        2 |
| 13.07.2016,19.07.2016                       | 7 9 11 17 20 22 23 24 38 39   |        2 |
| 13.07.2016,19.07.2016                       | 9 11 17 20 22 23 24 38 39 44  |        2 |
+---------------------------------------------+-------------------------------+----------+
11 rows in set (0.20 sec)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042668
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton
И еще тоже самое но отсортированное по количеству хромосом в кластере.

по мне так лажа.
если это miltbase.txt, то в clusterDimenstions : 10 должно было попасть 66 хромосон с chromosomesInCluster : 5

https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332994&msg=22276120

Это top 4000 отсортированных по двум столбцам соотв. И поскольку в кластер с 10 измерениями попадает большая
половина гипотетических центров кластеров (их порядка 29 тысяч) - то они просто отсеклись при выводе
отчота.

Сравни с 14 мерными лучше.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042671
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Это top 4000 отсортированных по двум столбцам соотв. И поскольку в кластер с 10 измерениями попадает большая
половина гипотетических центров кластеров (их порядка 29 тысяч) - то они просто отсеклись при выводе
отчота.

Сравни с 14 мерными лучше.

я не понимаю о чем речь.
cat report-2.json5 | grep "clusterDimenstions : 14" ничего не выводит, а на верхних местах лажа.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042673
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

Красота!
Спасибо огромное.
Мне нужно время чтоб это всё осмыслить.
Но по выводу результатов - красотища.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042677
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Это top 4000 отсортированных по двум столбцам соотв. И поскольку в кластер с 10 измерениями попадает большая
половина гипотетических центров кластеров (их порядка 29 тысяч) - то они просто отсеклись при выводе
отчота.

Сравни с 14 мерными лучше.

я не понимаю о чем речь.
cat report-2.json5 | grep "clusterDimenstions : 14" ничего не выводит, а на верхних местах лажа.


Давай по конкретному кейсу. Я могу сформировать полный отчот. Просто его трудно аттачить к этому форуму (он больше 150К).

Какие центры кластеров я упустил? Если сравнивать с твоими данными.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042680
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Давай по конкретному кейсу. Я могу сформировать полный отчот. Просто его трудно аттачить к этому форуму (он больше 150К).

Какие центры кластеров я упустил? Если сравнивать с твоими данными.


конкретно по clusterDimenstions : 10. должны быть записи с "clusterDimenstions : 10, chromosomesInCluster : 5", 66 штук.
я их перечислил тут https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332994&msg=22276120
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042684
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня примерно 25 тыщ центров кластеров с размерностью 10.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mayton@ryzen-ssd:~/git/happy-prohoroff$ tail report-full.json5 
  { clusterId : '18,30,40,41,58,59,60,61,73,78', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3079, 4918] }
  { clusterId : '9,11,24,30,40,44,45,66,71,78', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [2452, 2455] }
  { clusterId : '19,28,29,34,46,57,63,65,71,74', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [1440, 4113] }
  { clusterId : '19,31,32,34,44,71,72,74,76,77', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [996, 4973] }
  { clusterId : '14,37,48,56,57,59,63,67,75,76', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [4410, 4412] }
  // ElapsedTime      : 1227 ms, 
  // maxClusterLength : 14, 
  // maxChromosomesInCluster : 5 
  // clusters         : 29913
}
mayton@ryzen-ssd:~/git/happy-prohoroff$ grep -F "clusterDimenstions : 10" < report-full.json5 | wc -l
25649



Сколько у тебя? Возможно я ошибаюсь. Но давай как-то приблизимся к ошибке если она есть. Я пофикшу.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042685
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(переименовал maxClusterLength => maxClusterDimensions)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042689
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Сколько у тебя? Возможно я ошибаюсь. Но давай как-то приблизимся к ошибке если она есть. Я пофикшу.

я уже не уверен где у меня посчитано по miltbase.txt и где по miltbase1.txt
все что тебе нужно есть по ссылке, сделай

cat miltbase.txt | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60

т.е. должно быть туча хромосом с ключами от 1 до 12, попадающие в эти строки
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042696
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Сколько у тебя? Возможно я ошибаюсь. Но давай как-то приблизимся к ошибке если она есть. Я пофикшу.

я уже не уверен где у меня посчитано по miltbase.txt и где по miltbase1.txt
все что тебе нужно есть по ссылке, сделай

cat miltbase.txt | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016 1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60

т.е. должно быть туча хромосом с ключами от 1 до 12, попадающие в эти строки


Я щас попробую встать на дебаггер и понять куда улетели эти 5 штук. Есть предположение что они склеились
с кластером размерности 11 и выше.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042705
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

Повторил у себя ---- ОХРЕНЕТЬ!!!

Это чудо какое то.

Спасибо огромнейшее. Сейчас подсуну туда настоящий файл. Он у меня уже просчитан для 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042706
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Victor Ichalov,

Повторил у себя ---- ОХРЕНЕТЬ!!!

Это чудо какое то.

Спасибо огромнейшее. Сейчас подсуну туда настоящий файл. Он у меня уже просчитан для 10


С ходу - не сработало :-(

Что-ж мне так не везёт, блин.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042708
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

Когда будет презентация-конференция ваших запросов?

У меня вопрос. Ваши запросы подойдут для любых аналогичных входящих данных или это какой то частный случай? - я в коде вижу, что вы используете конкретную строку - или это для проверки?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042717
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg

Когда будет презентация-конференция ваших запросов?


Я не знаю, пока хотелось бы этого избежать.

miltorg

Ваши запросы подойдут для любых аналогичных входящих данных или это какой то частный случай? - я в коде вижу, что вы используете конкретную строку - или это для проверки?


Должны подходить для любых аналогичных, запросы с датой просто для контроля. Единственное что приходит в голову это то что во втором поле должно быть 19 пробелов:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mysql> select count(*) from miltbase1 where sequence regexp '( .+){19}';
+----------+
| count(*) |
+----------+
|     5000 |
+----------+

mysql> select count(*) from miltbase1 where sequence regexp '( .+){20}';
+----------+
| count(*) |
+----------+
|        0 |
+----------+



Может там подчёркивания, а не пробелы? Вообще сложно что-то ответить по предложенной диагностической информации. Возвращается пустая выборка или какая-то ошибка?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042720
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже скорее какой-то такой проверочный запрос:
Код: sql
1.
2.
mysql> select * from miltbase1 where not sequence regexp '^[0-9]+( [0-9]+){19}$';
Empty set (0.24 sec)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042739
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно задачу в лоб решить, но итоговый селект с перестановками нужно динамически формировать

Пример для 10 чисел в итоговой выборке.

Код: sql
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.
create table #Temp(Dt date, nv tinyint, primary key(dt,nv))
insert into #Temp(Dt,nv)
select try_convert(date,t.d,104), v.value
from #Temp1 t
cross apply string_split(t.s,' ') v

create table #TempGBy(Dt date, nv varchar(255), index ix_nv(nv))
insert into #TempGBy(Dt, nv)
-- Все перестановки по 10
SELECT t01.dt, cast(t01.nv as varchar(3)) +' '+ cast(t02.nv as varchar(3)) +' '+ cast(t03.nv as varchar(3)) +' '+ cast(t04.nv as varchar(3)) +' '+ cast(t05.nv as varchar(3)) +' '+ cast(t06.nv as varchar(3)) +' '+ cast(t07.nv as varchar(3)) +' '+ cast(t08.nv as varchar(3)) +' '+ cast(t09.nv as varchar(3)) +' '+ cast(t10.nv as varchar(3))
FROM #Temp t01
INNER JOIN #Temp t02 ON t02.Dt=t01.dt AND t02.nv > t01.nv
INNER JOIN #Temp t03 ON t03.Dt=t01.dt AND t03.nv > t02.nv AND t03.nv > t01.nv
INNER JOIN #Temp t04 ON t04.Dt=t01.dt AND t04.nv > t03.nv AND t04.nv > t02.nv AND t04.nv > t01.nv
INNER JOIN #Temp t05 ON t05.Dt=t01.dt AND t05.nv > t04.nv AND t05.nv > t03.nv AND t05.nv > t02.nv AND t05.nv > t01.nv
INNER JOIN #Temp t06 ON t06.Dt=t01.dt AND t06.nv > t05.nv AND t06.nv > t04.nv AND t06.nv > t03.nv AND t06.nv > t02.nv AND t06.nv > t01.nv
INNER JOIN #Temp t07 ON t07.Dt=t01.dt AND t07.nv > t06.nv AND t07.nv > t05.nv AND t07.nv > t04.nv AND t07.nv > t03.nv AND t07.nv > t02.nv AND t07.nv > t01.nv
INNER JOIN #Temp t08 ON t08.Dt=t01.dt AND t08.nv > t07.nv AND t08.nv > t06.nv AND t08.nv > t05.nv AND t08.nv > t04.nv AND t08.nv > t03.nv AND t08.nv > t02.nv AND t08.nv > t01.nv 
INNER JOIN #Temp t09 ON t09.Dt=t01.dt AND t09.nv > t08.nv AND t09.nv > t07.nv AND t09.nv > t06.nv AND t09.nv > t05.nv AND t09.nv > t04.nv AND t09.nv > t03.nv AND t09.nv > t02.nv AND t09.nv > t01.nv
INNER JOIN #Temp t10 ON t10.Dt=t01.dt AND t10.nv > t09.nv AND t10.nv > t08.nv AND t10.nv > t07.nv AND t10.nv > t06.nv AND t10.nv > t05.nv AND t10.nv > t04.nv AND t10.nv > t03.nv AND t10.nv > t02.nv AND t10.nv > t01.nv
--WHERE t01.dt='2016-07-14'

SELECT nv, Cnt=COUNT(1), STRING_AGG(dt, ',') 
FROM #TempGBy
GROUP BY nv
HAVING COUNT(1) > 3
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подфиксил у себя баг. Связан с этим чортовым символом табуляции который в оригинальном txt/csv
используется. Вобщем я проглатывал 1 символ хромосомы. Из за этого многие единички не попадали в репорт.
Теперь 60 тысяч потенциальных кластеров есть.

Вот шапка отчота сортированного по размеру измерений в кластере.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
mayton@ryzen-ssd:~/git/happy-prohoroff$ head -n 20 report-ordered-by-cl-dimensions.json5 
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.1
  // Java Runtime Version : 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
  // Top 2147483647 clusters findings, ranked by ''
  // Date: Sun Feb 07 02:18:56 EET 2021
  // Src: /bigdata/prohorov/miltbase.txt
  // Threashold range : [10..14]
  // Lines count : 5000
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15', clusterDimenstions : 15, chromosomesInCluster : 2, chromosomePositions : [3332, 3333] }
  { clusterId : '3,4,7,13,17,18,19,25,32,36,41,42,64,76', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [759, 2615] }
  { clusterId : '1,4,10,12,16,26,30,32,38,42,44,48,69,72', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [159, 2503] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13,14', clusterDimenstions : 14, chromosomesInCluster : 3, chromosomePositions : [3332, 3333, 3334] }
  { clusterId : '11,13,24,31,34,39,50,54,56,58,62,69,71,75', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [530, 2092] }
  { clusterId : '3,20,21,22,26,28,30,36,38,49,53,61,62,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [3191, 4826] }
  { clusterId : '10,17,28,33,34,35,40,42,51,69,73,75,77,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [981, 2949] }
  { clusterId : '2,3,4,5,22,26,28,34,46,50,53,55,67,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [3198, 3586] }
  { clusterId : '2,5,17,22,23,31,32,47,50,53,56,68,73', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3459, 3730] }
  { clusterId : '3,5,7,14,15,20,33,39,47,62,69,71,73', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3043, 4670] }
  { clusterId : '5,6,7,19,23,28,36,38,41,42,60,67,70', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [522, 2660] }
  { clusterId : '2,8,12,22,26,27,38,44,66,69,70,72,74', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [1888, 4317] }



Вот хвост.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mayton@ryzen-ssd:~/git/happy-prohoroff$ tail report-ordered-by-cl-dimensions.json5 
  { clusterId : '11,12,18,29,31,36,41,48,71,77', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [2627, 3800] }
  { clusterId : '9,11,12,19,24,29,30,52,78,79', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3464, 4895] }
  { clusterId : '12,30,40,41,45,52,59,63,67,79', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [1759, 4409] }
  { clusterId : '15,19,33,40,44,46,48,57,74,76', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [780, 1082] }
  { clusterId : '14,37,48,56,57,59,63,67,75,76', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [4410, 4412] }
  // ElapsedTime      : 3012 ms, 
  // maxClusterDimensions : 15, 
  // maxChromosomesInCluster : 5 
  // clusters         : 66449
}

...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042750
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И тоже самое. Отсортировано по количеству хромосом к властере.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.1
  // Java Runtime Version : 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
  // Top 2147483647 clusters findings, ranked by ''
  // Date: Sun Feb 07 02:18:53 EET 2021
  // Src: /bigdata/prohorov/miltbase.txt
  // Threashold range : [10..14]
  // Lines count : 5000
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 5, chromosomePositions : [3332, 3333, 3334, 3335, 3336] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13', clusterDimenstions : 13, chromosomesInCluster : 4, chromosomePositions : [3332, 3333, 3334, 3335] }
  { clusterId : '14,21,22,32,33,35,45,60,64,72', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [1184, 3158, 3709] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13,14', clusterDimenstions : 14, chromosomesInCluster : 3, chromosomePositions : [3332, 3333, 3334] }
  { clusterId : '15,19,20,38,41,43,51,54,66,74', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [181, 1261, 3639] }
  { clusterId : '21,29,50,53,60,61,63,64,70,71', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [38, 674, 2768] }
  { clusterId : '10,22,36,37,46,54,59,64,74,78', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [471, 2980, 3009] }
  { clusterId : '4,7,8,30,31,44,45,49,55,67', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [233, 2050, 4516] }
  { clusterId : '1,4,6,10,32,44,45,61,70,75', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [2003, 3325] }
  { clusterId : '4,11,13,23,27,32,33,54,61,73', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3008, 3967] }
  { clusterId : '4,10,17,21,23,32,53,54,61,76', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3601, 4263] }
  { clusterId : '7,8,23,28,38,39,42,52,71,75', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [548, 2660] }



Андрон. Устинов. Н5N1. Смотрите. Ищите несоответсвия.

Исходник и бинарь я предоставлю. Просто во мне сидит воинстующий эстет и я не хочу его отдавать
в виде рваной салфетки где я писал каракули и все прочее. Привык... знаетели к clean code.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042754
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

там на входе уже другой файл - miltbase1.txt ))
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042765
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Андрон. Устинов. Н5N1. Смотрите. Ищите несоответсвия.

Исходник и бинарь я предоставлю. Просто во мне сидит воинстующий эстет и я не хочу его отдавать
в виде рваной салфетки где я писал каракули и все прочее. Привык... знаетели к clean code.

clean code предполагает наличие итегрейшен теста, напишите интегрейшен тест уже, в ваших салфетках лажа. я же написал, в верном ответе на miltbase.txt должны быть 66 строк "clusterDimenstions : 10, chromosomesInCluster : 5"

вход для теста
Код: plaintext
1.
2.
3.
4.
5.
cat miltbase.txt | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60


выход: https://filebin.net/eg5q9277xuqpqvtw/integration_test_out.txt?t=rp9s0q41
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042768
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

Спасибо.
Возвращается недовыборка

Если у вас так строго с пробелами - я сейчас гляну нетестовый исходный
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042781
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg
Возвращается недовыборка


Другой причиной может быть то что мои запросы только сравнивают непрерывные подпоследовательности. Т.е. они не засчитывают такое как совпадение:

Код: plaintext
1.
 10 20 30 40 41 42 43 44 45  50
 10  15  20 30 40 41 42 43 44 45 


Просто может в miltbase1 такого нет, поэтому результат совпадает.

Ну можно написать SQL чтобы все упорядоченные комбинации сравнивал. Но это будет:
1. Медленнее
2. Видимо прогрессивно медленнее с уменьшением длины подпоследовательности
3. Сложно определить в процессе сколько процентов уже сделано (в perl полегче)
4. Вызывать необходимость следить за памятью, т.к. если она кончится в процессе то результата не дождёшься
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042794
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

clean code предполагает наличие итегрейшен теста, напишите интегрейшен тест уже, в ваших салфетках лажа. я же написал, в верном ответе на miltbase.txt должны быть 66 строк "clusterDimenstions : 10, chromosomesInCluster : 5"

Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих
модулей системы. У меня - просто процедура main. И интегрироваться там несчем.

По поводу архивов.

Код: sql
1.
2.
3.
4.
5.
6.
Archive:  miltbase.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
  348628  Defl:N    85876  75% 2021-02-05 12:58 91ba78c4  miltbase.txt
--------          -------  ---                            -------
  348628            85876  75%                            1 file



У меня последний файлик с контольной суммой 91ba78c4. Дайте линку на более актуальный. Не могу найти по треду.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042796
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

22276243

советую обработать в текстовом редакторе, заменив ТАВ после даты на ЗПТ
у меня это первая обязательная обработка данных



дом-2 жив, однако...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042798
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, спасибо. Чет не заметил.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042803
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov
miltorg
Возвращается недовыборка


Другой причиной может быть то что мои запросы только сравнивают непрерывные подпоследовательности. Т.е. они не засчитывают такое как совпадение:

Код: plaintext
1.
 10 20 30 40 41 42 43 44 45  50
 10  15  20 30 40 41 42 43 44 45 


Просто может в miltbase1 такого нет, поэтому результат совпадает.

Ну можно написать SQL чтобы все упорядоченные комбинации сравнивал. Но это будет:
1. Медленнее
2. Видимо прогрессивно медленнее с уменьшением длины подпоследовательности
3. Сложно определить в процессе сколько процентов уже сделано (в perl полегче)
4. Вызывать необходимость следить за памятью, т.к. если она кончится в процессе то результата не дождёшься


То есть вы делали задание под себя, а не по заданию?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042812
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Пошёл 2 месяц "простенького задания". Но у меня есть хоть долгие, но решения.
У вас? - Нет ничего?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042813
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих
модулей системы. У меня - просто процедура main. И интегрироваться там несчем.

странновастые мягко говоря у вас представления.
ладно, я утомился. топик в какой-то чат малолеток превратился. я говорю на этот вход должно быть 66 строк выхода, ноль внимания.
вот мой джарник, собранный на java 15 и фолдер с заглушкой от хадупа. как запустить видно в bat файле. вывод параметризован - или в вашем стиле или тот что хотел miltorg.
https://filebin.net/tngol6xocmvfzm7l/app1.zip?t=k7k0oin1

по мне так надо нормальный пример генерить, где и 19 совпадений встретиться могут, ну и инпут побольше, хотя бы 10к, ведь если пару раз в день строка добавляется ...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042815
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

решение есть давно, еще с прошлого топика

22276283
автору его осталось превратить в ОТВЕТ
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042816
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
решение есть давно, еще с прошлого топика

22276283
автору его осталось превратить в ОТВЕТ

по мне так это халтура базирующаяся на знании как был сгенерирован тестсет. на miltorg1.txt оно уже кривой ответ даст
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042817
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих
модулей системы. У меня - просто процедура main. И интегрироваться там несчем.

странновастые мягко говоря у вас представления.
ладно, я утомился. топик в какой-то чат малолеток превратился. я говорю на этот вход должно быть 66 строк выхода, ноль внимания.
вот мой джарник, собранный на java 15 и фолдер с заглушкой от хадупа. как запустить видно в bat файле. вывод параметризован - или в вашем стиле или тот что хотел miltorg.
https://filebin.net/tngol6xocmvfzm7l/app1.zip?t=k7k0oin1

по мне так надо нормальный пример генерить, где и 19 совпадений встретиться могут, ну и инпут побольше, хотя бы 10к, ведь если пару раз в день строка добавляется ...

Я не против хадупа. Я его использовал в AWS. Просто решение для Андрея надо упростить так чтобы он мог
хотя-бы это standalone запустить на любой тачке где установлена JRE. Скопировать и запустить шелл или бат-скриптик.

По поводу кластера 1 2 3 4 5 6 7 8 9 10 11 12.

Он был найден. И классифицирован дважды как подкластер более точного 1 2 3 4 5 6 7 8 9 10 11 12 13.

И три хромосомы в разных сочетаниях туда зашли.

Это отфильтровано из отчота.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
head report-ordered-by-cl-elements-1.json5
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.1
  // Java Runtime Version : 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
  // Top 2147483647 clusters findings, ranked by ''
  // Date: Sun Feb 07 14:12:00 EET 2021
  // Src: /bigdata/prohorov/miltbase1.txt
  // Threashold range : [10..14]
  // Lines count : 5000
  { clusterId : '3,5,7,9,11,17,20,22,23,24', clusterDimenstions : 10, chromosomesInCluster : 4, chromosomePositions : [3331, 3332, 3333, 3337] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 3, chromosomePositions : [3334, 3335, 3336] }



Код: sql
1.
2.
3.
grep -F "1,2,3,4,5,6,7,8,9,10,11,12" < report-ordered-by-cl-elements-1.json5
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 3, chromosomePositions : [3334, 3335, 3336] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3334, 3335] }



Почему должно быть 66 ?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042818
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

какая халтура не понял
это по miltorg1.txt и есть, хотите проверьте
поиск вхождения наборов через битовые ф-ии
находим пары вхождения и группируем по набору вхождения . Все.
Та как эта тема висит уже месяц - для меня это уже просто комедийный сериал

Т.к. автор выуживает конечный код под ключ для передачи заказчику - поэтому такой странный топик, и это уже второй
первый здесь Как отсортировать 1 миллиард записей?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042822
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov
miltorg

Когда будет презентация-конференция ваших запросов?


Я не знаю, пока хотелось бы этого избежать.

miltorg

Ваши запросы подойдут для любых аналогичных входящих данных или это какой то частный случай? - я в коде вижу, что вы используете конкретную строку - или это для проверки?


Должны подходить для любых аналогичных, запросы с датой просто для контроля. Единственное что приходит в голову это то что во втором поле должно быть 19 пробелов:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mysql> select count(*) from miltbase1 where sequence regexp '( .+){19}';
+----------+
| count(*) |
+----------+
|     5000 |
+----------+

mysql> select count(*) from miltbase1 where sequence regexp '( .+){20}';
+----------+
| count(*) |
+----------+
|        0 |
+----------+



Может там подчёркивания, а не пробелы? Вообще сложно что-то ответить по предложенной диагностической информации. Возвращается пустая выборка или какая-то ошибка?


Вот первые 20 строк нетестового файла:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2.1.2012	5 7 8 15 22 23 27 34 37 39 40 41 43 44 50 55 57 58 62 70
3.1.2012	3 5 9 12 15 16 19 20 23 25 29 30 34 37 43 48 55 58 59 61
4.1.2012	2 3 5 12 15 21 23 24 26 28 36 37 38 39 50 53 55 59 66 68
5.1.2012	2 3 5 7 8 11 14 16 19 25 35 43 50 51 55 60 61 66 67 70
6.1.2012	2 8 11 12 14 17 18 20 21 28 36 43 50 53 55 56 59 62 64 66
7.1.2012	2 5 10 11 15 16 18 19 27 29 30 32 33 35 42 43 45 62 63 65
8.1.2012	5 6 7 8 16 21 27 30 39 46 49 50 51 53 54 58 62 64 68 70
9.1.2012	1 2 3 7 9 11 12 13 15 17 20 24 26 28 34 45 48 49 61 66
10.1.2012	7 8 12 13 14 21 23 24 27 28 30 38 40 49 50 52 53 54 63 68
11.1.2012	1 3 5 7 9 10 14 21 23 27 31 34 45 46 47 48 51 52 64 65
12.1.2012	1 5 6 7 9 11 14 17 29 30 33 36 37 39 42 43 48 50 64 65
13.1.2012	2 9 11 12 13 17 18 23 25 27 33 38 40 44 45 46 47 52 64 66
14.1.2012	1 5 6 11 14 16 17 20 22 23 25 26 31 41 44 47 56 59 64 70
15.1.2012	3 5 9 19 24 25 26 27 28 33 34 40 45 50 53 55 59 63 64 66
16.1.2012	3 6 8 11 13 19 23 25 28 32 33 34 37 41 50 54 56 57 59 65
17.1.2012	2 3 5 7 15 23 28 29 32 37 38 46 49 50 52 53 59 60 61 62
18.1.2012	1 5 7 9 11 16 18 20 22 25 26 35 45 46 47 51 56 67 68 70
19.1.2012	11 15 16 22 25 28 29 32 34 35 42 43 47 49 52 53 54 57 62 63
20.1.2012	8 9 15 17 26 30 31 35 37 38 41 42 44 50 52 58 60 64 66 69
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042823
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg
То есть вы делали задание под себя, а не по заданию?


Вообще, я отвечал на вопрос "Как оптимизировать скорость?": "Вам лучше всего будет переписать perl скрипт ... Но это сложно написать без рабочего тестового стенда." (т.е. без реалистичных данных которые разложены в таблицы со структурой, требуемой скриптом)

Что касается "Могу предложить решение чисто на MySQL ...", то я его сделал для кросс-проверки что из тестовых данных действительно получается требуемое, оно выглядело подходящим, поэтому я его опубликовал именно чтобы можно было свериться с другими решениями, найти причины расхождений, если они есть. Я тут вижу проблему скорее в том что по тестовым примерам не очевидно что требуется найти также совпадения подпоследовательностей с разрывами и в общей массе написанного также сложно найти где это требование явно указано. (Кстати, оно точно нужно заказчику? Я в биоинформатике не очень разбираюсь, но уже оптимизировал что-то подобное и там вроде нужно было сравнивать только непрерывные последовательности.)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042824
Фотография 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
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042826
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton


Код: sql
1.
2.
3.
grep -F "1,2,3,4,5,6,7,8,9,10,11,12" < report-ordered-by-cl-elements-1.json5
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 3, chromosomePositions : [3334, 3335, 3336] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3334, 3335] }



Почему должно быть 66 ?
у H5N1, сопадающий набор из 12 чисел уже разложен по 10 здесь 22276120
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042828
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov
miltorg
То есть вы делали задание под себя, а не по заданию?


Вообще, я отвечал на вопрос "Как оптимизировать скорость?": "Вам лучше всего будет переписать perl скрипт ... Но это сложно написать без рабочего тестового стенда." (т.е. без реалистичных данных которые разложены в таблицы со структурой, требуемой скриптом)

Что касается "Могу предложить решение чисто на MySQL ...", то я его сделал для кросс-проверки что из тестовых данных действительно получается требуемое, оно выглядело подходящим, поэтому я его опубликовал именно чтобы можно было свериться с другими решениями, найти причины расхождений, если они есть. Я тут вижу проблему скорее в том что по тестовым примерам не очевидно что требуется найти также совпадения подпоследовательностей с разрывами и в общей массе написанного также сложно найти где это требование явно указано. (Кстати, оно точно нужно заказчику? Я в биоинформатике не очень разбираюсь, но уже оптимизировал что-то подобное и там вроде нужно было сравнивать только непрерывные последовательности. )


Похоже что я опять остался без решения.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042829
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подождем новых /клиентов/
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042830
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, что бы нельзя было генерить перестановки, не заглядывая в инпут файл.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042831
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

Я вполне нормально решал эту задачу частями. Но я упёрся в то, что мне нужно сравнить каждую строку с каждой просто получить количество совпадений и сами совпадения. И на Перл это занимало очень много времени - неделю.

У вас случайно нет решения этого на mySQL ?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042833
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12



Надо актуализировать. По новому файлу miltbase1.txt

Код: sql
1.
2.
3.
4.
cat -n miltbase1.txt | grep -F "1 2 3 4 5 6 7 8 9 10 11 12" 
  3335	16.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
  3336	17.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
  3337	18.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60



Есть только 3 хромосомы содержащие то вхождение.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042834
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton

Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих
модулей системы. У меня - просто процедура main. И интегрироваться там несчем.

странновастые мягко говоря у вас представления.
ладно, я утомился. топик в какой-то чат малолеток превратился. я говорю на этот вход должно быть 66 строк выхода, ноль внимания.
вот мой джарник, собранный на java 15 и фолдер с заглушкой от хадупа. как запустить видно в bat файле. вывод параметризован - или в вашем стиле или тот что хотел miltorg.
https://filebin.net/tngol6xocmvfzm7l/app1.zip?t=k7k0oin1

по мне так надо нормальный пример генерить, где и 19 совпадений встретиться могут, ну и инпут побольше, хотя бы 10к, ведь если пару раз в день строка добавляется ...


Спасибо.
47МБ - многовато для "простенького задания" - как все тут говорили месяц назад.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042835
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это полное решение?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042837
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

проверил, там уже нет тех 66, что были miltoirg.txt. милторг собственно для этого и сделал miltorg1.txt, что бы нельзя было генерить перестановки, не заглядывая в инпут файл.

причем здесь сгенерить
там не халтура, там ответ по miltorg1.txt
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042840
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 чисел может быть с "дырками внутри", если так понятнее

какие ХРОМОСОМЫ?)) это Лотерейные билеты!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042841
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

В задаче Андрона-Милторга я создаю кластер как только есть более чем 1 хромосома имеющая более чем 10
совпадающих полей. Вот и вся суть моего алгоритма. Попарное сравнение всех.

а мне не понятна суть. что бы создать кластер, нужно знать что это совпадение. т.е. надо в памяти иметь Hash структуру, куда заносятся абсолютно все получаемые из хромосом кластера. но 5к инпут файл дает миллиад кластеров, сомневаюсь что Hash в памяти такое поместиться.
так что я пока не понимаю сути идеи.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042842
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

автордает миллиад кластероввот с этого начиналась первая тема автора...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042844
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov

вхождение 10 чисел может быть с "дырками внутри", если так понятнее

Приведите пример.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042848
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
но 5к инпут файл дает миллиад кластеров, сомневаюсь что Hash в памяти такое поместиться.
так что я пока не понимаю сути идеи.

Но это-же глупо правда? Дело даже не в том что миллиард поместистя или нет. А будет ли эта структура
полезна для поиска или избыточна. Я - как dba - думаю о поисковыз структурах.

Зачем нам все сочетания компонентов кластера если есть корневая компонента которая в себя просто включает
всех детей?

Нам достаточно просто найти какой сет кластеров включает ... ээ нужное сочетание цифр и мы выйдем
быстро на ... эээ лотерейные билетики-хромосомы.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042849
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
    3 4 5 6 7 8 9 10 11 12
1    4 5 6 7 8 9 10 11 12
1 2    5 6 7 8 9 10 11 12
1 2 3     6 7 8 9 10 11 12
1 2 3 4     7 8 9 10 11 12
1 2 3 4 5     8 9 10 11 12

а остальные 60 я доверяю сделать самому) как вы любите, циклами
да и найденные сочетания из 12 ти чисел в исходном файле идут не подряд
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042855
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Нашел еще один баг с нумерацией. Я рапортую о хромосомах-лотерейных-билетах в нумерации с 0
как принято в Java. А в топике насколько я понял приводится нумерация с 1 как основа для тестирования.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042856
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я заливаю исходные данные в табл с автоинкрементом. Поэтоиу у меня с 1 .
В любом случае +-1 для сверки найти можно, это не суть
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042857
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
set tmp_table_size = 64*1024*1024*1024;
set max_heap_table_size = 64*1024*1024*1024;



64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042861
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

нормально работает и с 2-3G буфера без MEMORY
(нормально по сравнению с несколькими сутками у автора)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042862
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov

64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам).

Да дело не в гигабайтах. Эта задача похожа на тестовое задание после собеса. Но оно - с хитринкой.
С намёком на комбинаторный взрыв. И в таких задачах обычно идеи перебрать всё. Или всё брутфорсить - это
неправильные идеи. Да они сработают для 10 из 12. Но что мы будем делать при удвоении исходных
данных в разрядности? Просто докупить памяти - уже не вариант. Достигнем пределов Бреммермана?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042863
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Простенькая задачка" перешла в разряд нерешаемых...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042864
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

так это всегда в конечном счете будет "перебор каких-то значений" (не пойму зачем вставлять непонятные словени типа БРУТФОРС)
любой SELECT INSERT UPDATE - перебор
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042865
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
"Простенькая задачка" перешла в разряд нерешаемых...
давно решена, вам осталось в Perl
зацикловать ответ :
Код: sql
1.
2.
3.
4.
5.
/* получаем строку решения*/
фетчим
циклуем до нужного кол-ва циферек
"уважаемый заказчик, числа " /* такие то */ встречаются в строках /* номера строк */вот столько /* число */ раз
кнццкл
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042866
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы что? Не решили задачу даже для первого прохода?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042868
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Но что мы будем делать при удвоении исходных данных в разрядности?


Ну это сильно зависит от данных. Если у них грубо говоря энтропия низкая (много повторений одних и тех же значений) - то всё и прекрасно пройдёт. А если, например, менеджер может потом подсунуть этой же программе хаотические данные чтобы показать что она тормозит и не работает - то что тут сделаешь?

mayton
всё брутфорсить - это неправильные идеи


Вообще, есть конечно идея как это всё ускорить. Но да, пока не будет большей определённости и меньшей загадочности зачем это всё нужно и какая природа у входных данных, пожалуй забью её проверять.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042871
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Поставил обсчитывать 10-ку. Через 50 мин - ббудет результат.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042872
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подфиксил нумерацию.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
head -n 20 report-ordered-by-cl-elements-1.json5
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.2
  // Java Runtime Version : 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
  // Top 2147483647 clusters findings, ranked by 'elements'
  // Date: Sun Feb 07 17:05:01 EET 2021
  // Src: /bigdata/prohorov/miltbase1.txt
  // Threashold range : [10..14]
  // Lines count : 5000
  { clusterId : '3,5,7,9,11,17,20,22,23,24', clusterDimenstions : 10, chromosomesInCluster : 4, chromosomePositions : [3332, 3333, 3334, 3338] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 3, chromosomePositions : [3335, 3336, 3337] }
  { clusterId : '14,21,22,32,33,35,45,60,64,72', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [1185, 3159, 3710] }
  { clusterId : '15,19,20,38,41,43,51,54,66,74', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [182, 1262, 3640] }
  { clusterId : '3,5,7,9,11,17,20,22,23,24,63', clusterDimenstions : 11, chromosomesInCluster : 3, chromosomePositions : [3332, 3333, 3338] }
  { clusterId : '21,29,50,53,60,61,63,64,70,71', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [39, 675, 2769] }
  { clusterId : '10,22,36,37,46,54,59,64,74,78', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [472, 2981, 3010] }
  { clusterId : '4,7,8,30,31,44,45,49,55,67', clusterDimenstions : 10, chromosomesInCluster : 3, chromosomePositions : [234, 2051, 4517] }
  { clusterId : '1,4,6,10,32,44,45,61,70,75', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [2004, 3326] }
  { clusterId : '4,11,13,23,27,32,33,54,61,73', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3009, 3968] }
  { clusterId : '4,10,17,21,23,32,53,54,61,76', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [3602, 4264] }
  { clusterId : '7,8,23,28,38,39,42,52,71,75', clusterDimenstions : 10, chromosomesInCluster : 2, chromosomePositions : [549, 2661] }


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
head -n 20 report-ordered-by-cl-dimensions-1.json5
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.2
  // Java Runtime Version : 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
  // Top 2147483647 clusters findings, ranked by 'dimensions'
  // Date: Sun Feb 07 17:05:03 EET 2021
  // Src: /bigdata/prohorov/miltbase1.txt
  // Threashold range : [10..14]
  // Lines count : 5000
  { clusterId : '3,5,7,9,11,17,20,22,23,24,38,39,44,46,50,52,63', clusterDimenstions : 17, chromosomesInCluster : 2, chromosomePositions : [3332, 3338] }
  { clusterId : '3,4,7,13,17,18,19,25,32,36,41,42,64,76', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [760, 2616] }
  { clusterId : '1,4,10,12,16,26,30,32,38,42,44,48,69,72', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [160, 2504] }
  { clusterId : '11,13,24,31,34,39,50,54,56,58,62,69,71,75', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [531, 2093] }
  { clusterId : '3,20,21,22,26,28,30,36,38,49,53,61,62,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [3192, 4827] }
  { clusterId : '10,17,28,33,34,35,40,42,51,69,73,75,77,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [982, 2950] }
  { clusterId : '2,3,4,5,22,26,28,34,46,50,53,55,67,79', clusterDimenstions : 14, chromosomesInCluster : 2, chromosomePositions : [3199, 3587] }
  { clusterId : '2,5,17,22,23,31,32,47,50,53,56,68,73', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3460, 3731] }
  { clusterId : '3,5,7,14,15,20,33,39,47,62,69,71,73', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [3044, 4671] }
  { clusterId : '5,6,7,19,23,28,36,38,41,42,60,67,70', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [523, 2661] }
  { clusterId : '2,8,12,22,26,27,38,44,66,69,70,72,74', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [1889, 4318] }
  { clusterId : '3,5,9,12,18,19,21,35,36,41,42,73,75', clusterDimenstions : 13, chromosomesInCluster : 2, chromosomePositions : [186, 250] }



Андрон. Тестируй. Туды ево в качель...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042873
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Что это? Первый проход?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042876
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это конец. В моём алгоритме больше нет проходов.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042878
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Если это решение - ещё раз пересмотрите пример решения:

10 чисел | строки в которых они встречаются |
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042879
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

верно.
Есть там 17 вхождений"id1""id2""strin""XXX""3332""3338""3 5 7 9 11 17 20 22 23 24 38 39 44 46 50 52 63""17""760""2616""3 4 7 13 17 18 19 25 32 36 41 42 64 76""14""3192""4827""3 20 21 22 26 28 30 36 38 49 53 61 62 79""14""3199""3587""2 3 4 5 22 26 28 34 46 50 53 55 67 79""14""531""2093""11 13 24 31 34 39 50 54 56 58 62 69 71 75""14""982""2950""10 17 28 33 34 35 40 42 51 69 73 75 77 79""14""160""2504""1 4 10 12 16 26 30 32 38 42 44 48 69 72""14""1697""1988""9 22 28 33 35 51 63 66 67 69 73 75 77""13"

теперь правильный гроуп бай по "совпадению" и получим
3332-3333-3334-3338 3 5 7 9 11 17 20 22 23 24 4
для ответа разворачиваем 3 5 7 9 11 17 20 22 23 24 в 10-ки ( здесь одна)
и добавляем слова
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042880
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
mayton,

Если это решение - ещё раз пересмотрите пример решения:

10 чисел | строки в которых они встречаются |

Дрон. Андрон. Стопы-стопы. Послушай сюда.

Я не делаю твоё задание. Твоё задание - это проиндексировать вселенную. А я тебе дал ИНСТРУМЕНТ
как создать структуру данных которая ПРЕДСТАВЛЯЕТ индексированную вселенную.

Ферштейн?

При этом я спасён от комбинаторного взрыва. У меня формула с факториалом сводится просто к формуле
с квадратом. Соединения пар всех хромосом. В перспективе - я экономлю место на диске.
Моя структура данных - компактнее. Зуб даю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042882
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А мне нужны решения.

С этими персонажами Тема становится скучна.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042885
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алекс Устинов. Что думаешь? Имеет право на жизнь такой метод?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042887
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я таким и считаю, только в MySQL через битовое сравнение.
Т.е. также получаю пары с совпадениями, (заумно - пересечение множеств, автор так и делал сначала в Perl)
группирую по вхождению строки и все.
Максимальное кол-во вхождений и будет ответом. Неважно - совпало в максимуме 10 или 12. Это будет РЕШЕНИЕМ.

В итоге задача решена еще в прошлом топике, когда Paver предложил такой вариант.
Автору нужен код, поэтому здесь такая котовасия,
все это читалось с самого начала
рядом попытка кусочного получения кода))) Как получить разряды установленных единиц?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042888
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Таблица - 1 проход:

64 тысячи записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mysql> select * from n10tn1 where sovpalo>13;
+-------+------------------------------------------------+-----------+---------+
| id    | d1                                             | str       | sovpalo |
+-------+------------------------------------------------+-----------+---------+
|  4117 | 1_4_10_12_16_26_30_32_38_42_44_48_69_72        | 160-2504  |      14 |
| 13245 | 11_13_24_31_34_39_50_54_56_58_62_69_71_75      | 531-2093  |      14 |
| 18565 | 3_4_7_13_17_18_19_25_32_36_41_42_64_76         | 760-2616  |      14 |
| 23358 | 10_17_28_33_34_35_40_42_51_69_73_75_77_79      | 982-2950  |      14 |
| 57776 | 3_20_21_22_26_28_30_36_38_49_53_61_62_79       | 3192-4827 |      14 |
| 57822 | 2_3_4_5_22_26_28_34_46_50_53_55_67_79          | 3199-3587 |      14 |
| 59122 | 3_5_7_9_11_17_20_22_23_24_38_39_44_46_50_52_63 | 3332-3338 |      17 |
+-------+------------------------------------------------+-----------+---------+
7 rows in set (0.13 sec)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042889
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отлично, 22276747
первую стадию сделали. Теперь надо правильно группирнуть с GROUP_CONCAT
и не держите STR в таком виде, дальнейшая обработка неудобна
лучше так и оставьте STR1 и STR2
чтобы можно было схлопнуть по DL допустим вот так
Код: sql
1.
2.
3.
4.
5.
6.
SELECT GROUP_CONCAT(t.id), t.dl, COUNT(*) AS xxx FROM 
(SELECT o.str1 AS id , o.dl FROM otvet o
UNION 
SELECT o.str2 AS id , o.dl FROM otvet o) AS t
GROUP BY t.dl
HAVING XXX>1
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042892
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это конечно можно поправить
Код: sql
1.
HAVING XXX> 1


нам надо вообще то максимальное число строк в группировке


еще один шаг и будет решение, не прошло и 2 месяца
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042894
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все выкладываю. Берите. Пользуйтесь. Работает 1.5 секунды на моём железе. Это при том что JVM - холодная
на таком старте.

Это работающий и самодостаточный код. Нужна Java-11 и maven сборщик для сборки с сорцов.

Бинарь я тоже приложу чтоб сразу запускать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042895
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И бинарь.

Образец запуска - в исходниках в "go"-файле.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042900
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg,

Поставил обсчитывать 10-ку. Через 50 мин - ббудет результат.


10 - считается на чистом sql - 3 минуты максимум.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042901
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__
miltorg
miltorg,

Поставил обсчитывать 10-ку. Через 50 мин - ббудет результат.


10 - считается на чистом sql - 3 минуты максимум.


Правда 112 ядер и 1 ТераБайт оперативки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042904
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, да, ваш метод с битами похоже работает. Просто "3 5 7 9 11 17 20 22 23 24" это плохой пример для демонстрации, потому что он появляется только без пропусков:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
mysql> select * from miltbase1 where sequence like '%3 %5 %7 %9 %11 %17 %20 %22 %23 %24%';

+------------+---------------------------------------------------------+
| date       | sequence                                                |
+------------+---------------------------------------------------------+
| 13.07.2016 | 3 5 7 9 11 17 20 22 23 24 38 39 44 46 50 52 63 67 73 79 |
| 14.07.2016 | 3 5 7 9 11 17 20 22 23 24 48 49 54 56 60 62 63 77 83 99 |
| 15.07.2016 | 3 5 7 9 11 17 20 22 23 24 25 26 27 28 29 30 31 32 33 34 |
| 19.07.2016 | 3 5 7 9 11 17 20 22 23 24 38 39 44 46 50 52 53 57 63 69 |
+------------+---------------------------------------------------------+



А вот хороший пример (если его находит, то скорее всего правильно работает):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
mysql> select * from miltbase1 where sequence like '%2 %3 %4 %5 %22 %26 %28 %34 %46%';
+------------+---------------------------------------------------------+
| date       | sequence                                                |
+------------+---------------------------------------------------------+
| 02.03.2016 | 2 3 4 5 10 14 15 19 22 26 28 34 46 50 53 55 57 67 71 79 |
| 25.03.2017 | 2 3 4 5 12 21 22 26 28 34 43 46 50 51 53 54 55 67 74 79 |
+------------+---------------------------------------------------------+

mysql> select * from miltbase1 where sequence like '%3 %4 %5 %22 %26 %28 %34 %46 %50%';
+------------+---------------------------------------------------------+
| date       | sequence                                                |
+------------+---------------------------------------------------------+
| 02.03.2016 | 2 3 4 5 10 14 15 19 22 26 28 34 46 50 53 55 57 67 71 79 |
| 25.03.2017 | 2 3 4 5 12 21 22 26 28 34 43 46 50 51 53 54 55 67 74 79 |
+------------+---------------------------------------------------------+



Но как это реализовать на SQL - разум пасует.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042907
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg,

Таблица - 1 проход:

64 тысячи записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mysql> select * from n10tn1 where sovpalo>13;
+-------+------------------------------------------------+-----------+---------+
| id    | d1                                             | str       | sovpalo |
+-------+------------------------------------------------+-----------+---------+
|  4117 | 1_4_10_12_16_26_30_32_38_42_44_48_69_72        | 160-2504  |      14 |
| 13245 | 11_13_24_31_34_39_50_54_56_58_62_69_71_75      | 531-2093  |      14 |
| 18565 | 3_4_7_13_17_18_19_25_32_36_41_42_64_76         | 760-2616  |      14 |
| 23358 | 10_17_28_33_34_35_40_42_51_69_73_75_77_79      | 982-2950  |      14 |
| 57776 | 3_20_21_22_26_28_30_36_38_49_53_61_62_79       | 3192-4827 |      14 |
| 57822 | 2_3_4_5_22_26_28_34_46_50_53_55_67_79          | 3199-3587 |      14 |
| 59122 | 3_5_7_9_11_17_20_22_23_24_38_39_44_46_50_52_63 | 3332-3338 |      17 |
+-------+------------------------------------------------+-----------+---------+
7 rows in set (0.13 sec)





Запрос с заполнением данных и расчетом, без всяких промежуточных расчетов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table #Temp(id int identity(1,1), Dt date, nv tinyint, primary key(dt,nv), index IX_nv(nv,dt))
insert into #Temp(Dt,nv)
select try_convert(date,t.d,104), v.value
from #Temp1 t
cross apply string_split(t.s,' ') v

SELECT max(t1.id), max(t2.id), t1.Dt, t2.Dt, Cnt=COUNT(1), STRING_AGG(t1.nv, ',') WITHIN GROUP (ORDER BY t1.nv)
FROM #Temp t1
INNER JOIN #Temp t2 ON t2.nv = t1.nv
  AND t2.Dt > t1.Dt
--where t1.Dt = '2016-07-14'
GROUP BY t1.Dt, t2.Dt
having count(1) > 9
order by 5 desc,1,2



Выполнение 1 сек.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dt	Dt	Cnt	(No column name)
2016-07-13	2016-07-19	17	3,5,7,9,11,17,20,22,23,24,38,39,44,46,50,52,63
2010-02-05	2015-06-27	14	10,17,28,33,34,35,40,42,51,69,73,75,77,79
2008-11-11	2013-02-20	14	11,13,24,31,34,39,50,54,56,58,62,69,71,75
2007-11-06	2014-04-07	14	1,4,10,12,16,26,30,32,38,42,44,48,69,72
2016-02-24	2020-08-16	14	3,20,21,22,26,28,30,36,38,49,53,61,62,79
2016-03-02	2017-03-25	14	2,3,4,5,22,26,28,34,46,50,53,55,67,79
2009-06-28	2014-07-28	14	3,4,7,13,17,18,19,25,32,36,41,42,64,76
2012-01-21	2012-11-07	13	9,22,28,33,35,51,63,66,67,69,73,75,77
2011-11-07	2014-03-02	13	9,10,20,25,26,34,37,43,48,50,56,61,76
2012-01-28	2018-02-11	13	2,5,22,29,37,42,44,53,60,61,67,71,76
2012-07-26	2015-08-12	13	6,11,20,23,26,27,32,44,62,63,71,72,79
2012-07-31	2019-03-26	13	2,8,12,22,26,27,38,44,66,69,70,72,74
2012-08-19	2018-09-14	13	1,7,10,17,20,23,25,28,29,34,64,69,70
2012-10-20	2012-12-06	13	1,5,11,15,24,31,32,48,50,55,61,65,70
2012-11-11	2017-03-28	13	1,4,10,11,18,23,34,54,56,62,66,69,77
2012-11-13	2015-10-24	13	4,27,33,34,38,63,66,67,69,72,73,74,75
2012-11-23	2016-08-05	13	1,4,26,28,31,33,44,47,52,57,67,73,75
2013-01-08	2017-08-15	13	4,11,15,16,17,20,22,25,38,44,53,56,79
2013-02-25	2015-08-10	13	2,13,19,21,23,24,33,34,41,45,53,64,69
2011-11-18	2015-08-27	13	9,15,23,26,28,33,44,49,54,55,61,64,65
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042909
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом вторым запросом с 10 join сформировать все перечисления из 10 чисел и сгруппировать, вот и вся задача.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
2016-07-13	3 5 7 9 11 17 20 22 23 24
2016-07-13	3 5 7 9 11 17 20 22 23 38
2016-07-13	3 5 7 9 11 17 20 22 24 38
2016-07-13	3 5 7 9 11 17 20 23 24 38
2016-07-13	3 5 7 9 11 17 22 23 24 38
2016-07-13	3 5 7 9 11 20 22 23 24 38
2016-07-13	3 5 7 9 17 20 22 23 24 38
2016-07-13	3 5 7 11 17 20 22 23 24 38
2016-07-13	3 5 9 11 17 20 22 23 24 38
2016-07-13	3 7 9 11 17 20 22 23 24 38
2016-07-13	3 5 7 9 11 17 20 22 23 39
2016-07-13	3 5 7 9 11 17 20 22 24 39
2016-07-13	3 5 7 9 11 17 20 22 38 39
2016-07-13	3 5 7 9 11 17 20 23 24 39
2016-07-13	3 5 7 9 11 17 22 23 24 39
2016-07-13	3 5 7 9 11 20 22 23 24 39
2016-07-13	3 5 7 9 17 20 22 23 24 39
2016-07-13	3 5 7 11 17 20 22 23 24 39
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042912
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

не, немного не так.
Надо найти строки в которые входят 10 чисел,
по другому - один набор из 10-ти чисел должен входить во все найденные строки
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042915
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
__Avenger__,

не, немного не так.
Надо найти строки в которые входят 10 чисел,
по другому - один набор из 10-ти чисел должен входить во все найденные строки


Ну так это и есть группировка по 10 числам (набору). А в агрегацию - список дат.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042918
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__
Alex_Ustinov
__Avenger__,

не, немного не так.
Надо найти строки в которые входят 10 чисел,
по другому - один набор из 10-ти чисел должен входить во все найденные строки


Ну так это и есть группировка по 10 числам (набору). А в агрегацию - список дат.


Вот ответ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
3 5 7 9 11 17 20 22 23 24	4	2016-07-13 2016-07-14 2016-07-15 2016-07-19
3 5 7 9 11 17 20 22 23 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 7 9 11 17 20 22 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 7 9 11 17 20 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 7 9 11 17 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 7 9 11 20 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 7 9 17 20 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 5 9 11 17 20 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
3 7 9 11 17 20 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19
4 6 10 11 16 50 64 67 72 78	3	2008-07-12 2009-10-06 2019-04-15
4 6 7 26 31 39 44 47 63 69	3	2008-07-14 2013-11-27 2013-12-25
4 6 9 20 26 28 42 63 65 67	3	2017-02-18 2017-08-10 2018-01-13
4 7 8 30 31 44 45 49 55 67	3	2008-01-19 2013-01-09 2019-10-11
5 7 11 17 22 23 24 38 50 52	3	2009-02-08 2016-07-13 2016-07-19
5 7 9 11 17 20 22 23 24 63	3	2016-07-13 2016-07-14 2016-07-19

3 минуты все затраты на все.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042922
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,
Тихо-тихо, боясь спугнуть:
- Ура... У нас есть ответ?

А на mySQL это получится?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042923
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
__Avenger__,
Тихо-тихо, боясь спугнуть:
- Ура... У нас есть ответ?

А на mySQL это получится?


Конечно. Там же примитивные запросы без всяких bit_count. Только join с группировкой и все!!!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042924
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

ну это если все строки совпадений разложить по 10 то да

а из таблицы после 1-го прохода можно группирнуть по строке вхождений взять максимальный каунт,

в данном случае максимум и будет на строке 3 5 7 9 11 17 20 22 23 24 (это так получиось у ТС в этом примере что строка из 10)

в предыдущих его данных было 5 строк совпадений из 12 чисел (в итоге в ответе 66 строк по 10 чисел в ответе)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042925
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__
miltorg
__Avenger__,
Тихо-тихо, боясь спугнуть:
- Ура... У нас есть ответ?

А на mySQL это получится?


Конечно. Там же примитивные запросы без всяких bit_count. Только join с группировкой и все!!!


Для начало надо исходные данные положить в таблицу
Код: sql
1.
create table #Temp(Dt date, nv tinyint, primary key(dt,nv), index IX_nv(nv,dt))



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2007-05-31	13
2007-05-31	14
2007-05-31	15
2007-05-31	17
2007-05-31	21
2007-05-31	26
2007-05-31	29
2007-05-31	31
2007-05-31	32
2007-05-31	34
2007-05-31	38
2007-05-31	39
2007-05-31	40
2007-05-31	42
2007-05-31	44
2007-05-31	51
2007-05-31	60
2007-05-31	63
2007-05-31	67
2007-05-31	76
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042927
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

Как это всё переписать на mySQL?
Помоожете?
Пожалуйста.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042928
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

это путь прошлой темы, там на 5000строк раскручиваем до 1млрд?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042929
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Как это всё переписать на mySQL?
Помоожете?
Пожалуйста.
тебе про битовые сравнения/подсчет битов говорили?
используй 22276803
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042930
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
__Avenger__,

это путь прошлой темы, там на 5000строк раскручиваем до 1млрд?


Да, но на этих данных миллиард не получился, всего лишь - 319139 строк с 10-ками.

Да и что такое миллиард? У меня сейчас БД по 16 ТераБайт!!!!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042931
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

Началось...

Ответа нет получается опять?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042932
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

10-ки я расчитал за 1 день.
9-ки считало - неделю
А ещё нужны 8-ки, 7, 6-ки

Плюс к ним будут каждый день дополнятся строки.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042933
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
__Avenger__,

Началось...

Ответа нет получается опять?


Так а в чем сложность разобрать данные из строки в столбец? Как пробовал?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042934
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

ну с такой техникой понятно)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042936
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
__Avenger__,

10-ки я расчитал за 1 день.
9-ки считало - неделю
А ещё нужны 8-ки, 7, 6-ки

Плюс к ним будут каждый день дополнятся строки.
вот чудак-человек...
зачем тогда делать 10-ки потом 9-ки ..... 6-ки если надо раз сделать самый минимум чисел, допустим 6, слить в таблицу и из нее получить и 6-7-8-9-10-ки
или залить >=10 затем подливать в таблицу =9 =8 =7 =6 совпадений чтобы было быстрее

затем только 1 новую строку переводить в биты и также искать вхождения >=6 и добавлять в "таблицу 1-го прохода"
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042937
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 9ках 288тыс по данным miltbase1.txt
/если я правильно запомнил/
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042940
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Затем, что 10-ку мой ноутбук обрабатывает в течении часа.
А 6-ку он говорит, что у него таблица переполнилась после 4 часов работы.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042941
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Это я про первый проход.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042943
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

какой у вас ноутбук - сколько RAM не может быть чтоб <4G

сколько стоит параметр innodb_buffer_pool_size в my.cnf?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042944
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
miltorg,

Это я про первый проход.
каким методом вы до сих пор делаете первый заход? По прежнему в Перл?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042945
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Я вот только не понял, similar-chromosome-lookup-1.0.jar , он действительно делает 25 млн. попарных сравнений каждого с каждым, или там что-то типа градиентного спуска? Можно им получить одну или все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных? Если да, то уверую окончательно (хотя этот метод квадратичный по отношению к числу записей в исходной таблице, а брутфорс - линейный).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042946
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных?ну там так и есть, судя по предоставленным кускам с выхода.
Т.е. 9 -ки не входят в 10 ки не входят в 11 и т.д.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042948
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот только не понял, similar-chromosome-lookup-1.0.jar , он действительно делает 25 млн. попарных сравнений каждого с каждым, или там что-то типа градиентного спуска?

Он - действительно квадратичный. Никакого градиентного спуска нет. Да. Делает 5000 * 5000 / 2 = 12500 сравнений.
Деление на 2 потому что все пары не нужны а только верхняя треугольная часть матрицы пар.

Но ваш вопрос касается чего? Генерации индекса? Или операции поиска.

Давайте просто разделим эти два понятия. Андрей в начале говорил что база будет неизменна. И лишь периодически
владелец будет делать в нее insert новых хромосом (или лотерейных билетов).

Тоесть. Если у нас уже будет построен по ней индекс - то наша задача сводится только к периодической вставке в него
новых строк. Тоесть я рассуждаю как DBA в условиях эксплуатации инфо-системы которая уже инициализирована.
Моя идея - предварительная подготовка данных таким образом чтобы быстро обслужить входящие запросы клиента.

Все прочие цели - такие как выдать на экран "ВСЁ" я считаю ложными. Они являются побочным эффектом неправильного
ТЗ. Мне сложно себе представить как нормальный человек может взглядом охватить 5000 векторов целых чисел
(или не дай бох 1 000 000 000 кластеров). Поэтому я акцентирую внимание на том что нас интересует не
текстовые файлы. И даже не наполненные таблички MySQL. А информационная система, обладающая
способностью быстро дать отклик на нужный лаконичный запрос от заказчика. Или на несколько типов запросов.

Можно им получить одну или все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных? Если да, то уверую окончательно (хотя этот метод квадратичный по отношению к числу записей в исходной таблице, а брутфорс - линейный).

Если вы хотите получить например все над-кластеры которые покрывают суб-кластер 5,6,7,8,9,10,11,12,13 (к примеру)
- то отвечаю - ДА. Можно. Думаю что займет меньше секунды. Как и многие другие участники топика я думал об
оптимизации и заложил такой расчет что хромосома длиной до 100 элементов у меня будет занимать не более
128 бит или 2х64 битных числа в формате long.

Если вы смотрели в код то видели что ключом в хеш-таблице является BitSet. Это обобщенный вариант такой пары.
Безразмерный.

Код: java
1.
Map<BitSet, Set<Integer>> clusters = new HashMap<>();



И дополняя свой ответ. Когда мы получим списки над-кластеров - то мы получим и сами хромосомы. Они являются
value-s по отношению к ключам.

Более раняя (неопубликованная) версия кода содержала работу над сырыми целыми числами (Long)

(фрагмент)

Код: java
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.
   List<Long> verticalLeft = new ArrayList<>(INITAL_SEGMENT_ITEMS);
        List<Long> verticalRight = new ArrayList<>(INITAL_SEGMENT_ITEMS);
        //List<String> s = new ArrayList<>(INITAL_SEGMENT_ITEMS);

        stream.forEach(line -> {
            long leftBitmap = 0L;
            long rightBitmap = 0L;

            int[] arr = Arrays.stream(line.substring(line.indexOf('\t') + 1).split(" "))
                    .skip(1)
                    .mapToInt(Integer::valueOf).toArray();

            for (int i = 0; i < arr.length; i++) {
                int item = arr[i];
                if (item > 128) {
                    throw new RuntimeException("Unsupported chromosome gen > 128!");
                } else if (item < 64) {
                    leftBitmap |= (1L << (item - 1));
                } else {
                    rightBitmap |= (1L << (item - 1 - 64));
                }
            }
            verticalLeft.add(leftBitmap);
            verticalRight.add(rightBitmap);
            //s.add(line);
            //System.out.printf("%016X : %016X \n", leftBitmap, rightBitmap);
        });



Но я заметил что если заменить пару этих чисел на структуру BitSet почти ничего не теряю в performance - но приобретаю надежность
и бесконечную масштабируемость по размеру вектора хромосомы.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042949
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Victor Ichalov,все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных?
ну там так и есть, судя по предоставленным кускам с выхода.
Т.е. 9 -ки не входят в 10 ки не входят в 11 и т.д.не немного не так.
если есть совпадение из 10 чисел в 4 строках, то этих совпадений нет в девятках.
т.е в каждой паре - максимальное совпадение
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042953
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

5000 * 5000 / 2 = 12500000 сравнений

Но в целом я согласен, что на этих размерах таблиц этот метод перспективнее брутфорса.

Но ваш вопрос касается чего?

Я на самом деле просто хочу понять, есть ли там такие последовательности (дуплицированные, длиной 9, не входящие в более длинные). В 22276737 вроде нет таких, самые короткие - 10.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я выложу полный отчот. Какая файловая шара вам доступна?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042956
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот поиск по like and like в 10 000 000 идёт 5 сек. а сравнение двух длинных чисел намного быстрее
так в чем проблема?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042957
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давайте я выложу полный отчот. Какая файловая шара вам доступна?
гугл диск всем доступен
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042958
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

напиши лайк чтобы множества с дырками искать.
т.е. чтобы в ЛАЙК %4% %5% %66% не попало 34 35 66 и 44 45 66 и т.д.
единственное - держать числа в маске
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042959
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Все выкладываю. Берите. Пользуйтесь. Работает 1.5 секунды на моём железе. Это при том что JVM - холодная
на таком старте.

Это работающий и самодостаточный код. Нужна Java-11 и maven сборщик для сборки с сорцов.

Бинарь я тоже приложу чтоб сразу запускать.

интегрейшен теста так и нет, беру mitbase.txt, 66 записей с пятью попаданиями в отчете нет.
перепроверяю файл
Код: plaintext
1.
2.
3.
4.
5.
6.
cat miltbase.txt  | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042960
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton
Все выкладываю. Берите. Пользуйтесь. Работает 1.5 секунды на моём железе. Это при том что JVM - холодная
на таком старте.

Это работающий и самодостаточный код. Нужна Java-11 и maven сборщик для сборки с сорцов.

Бинарь я тоже приложу чтоб сразу запускать.

интегрейшен теста так и нет, беру mitbase.txt, 66 записей с пятью попаданиями в отчете нет.
перепроверяю файл
Код: plaintext
1.
2.
3.
4.
5.
6.
cat miltbase.txt  | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60

Бери новый файл miltbase1.txt
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042962
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1,

там кажись уже по данным mitbase1.txt
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042964
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про инт-тесты я уже отвечал. Непонятно зачем два раза спрашивать?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042967
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Бери новый файл miltbase1.txt

не возьму. я уже на miltbase.txt вижу, что салфетка не работает.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042968
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с 9-ками то же решение
GROUP_CONCAT(t.id) strin xxx3332 3333 3334 3338 3 5 7 9 11 17 20 22 23 24 4макс 4 совпадения
10 комбинаций по 9 из набора 3 5 7 9 11 17 20 22 23 24
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
mayton
Бери новый файл miltbase1.txt

не возьму. я уже на miltbase.txt вижу, что салфетка не работает.

Как будет угодно. Я не настаиваю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042973
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вход
Код: plaintext
1.
2.
3.
4.
5.
14.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60

выход
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
{
  // Generated with SimilarChromosomeLookup (BitSet optimization) 1.0.2
  // Java Runtime Version : 15.0.1+9-18
  // Top 2147483647 clusters findings, ranked by 'elements'
  // Date: Sun Feb 07 22:29:21 EET 2021
  // Src: inputfile.txt
  // Threashold range : 10
  // Lines count : 5
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12', clusterDimenstions : 12, chromosomesInCluster : 5, chromosomePositions : [1, 2, 3, 4, 5] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13', clusterDimenstions : 13, chromosomesInCluster : 4, chromosomePositions : [1, 2, 3, 4] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13,14', clusterDimenstions : 14, chromosomesInCluster : 3, chromosomePositions : [1, 2, 3] }
  { clusterId : '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15', clusterDimenstions : 15, chromosomesInCluster : 2, chromosomePositions : [1, 2] }
  // ElapsedTime      : 50 ms, 
  // maxClusterDimensions : 15, 
  // maxChromosomesInCluster : 5 
  // clusters         : 4
}

нет ни clusterDimenstions : 11 ни clusterDimenstions : 10
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042974
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8-ки - после первого захода поиска совпадений >=8
в таблице 954,203 строк

8-ки - добавляются кобинации с 4 совпадающими строкамиGROUP_CONCAT(t.id) strin xxx1037 3902 1 1267 13 14 29 38 42 44 51 63 44806 972 1977 18 13 14 35 40 48 59 65 73 43423 3331 4867 164 2 27 35 53 60 63 67 78 44401 4934 1699 298 2 3 11 34 36 50 56 79 4950 3673 3549 2876 2 7 16 23 27 47 53 55 44060 1250 3452 4898 23 31 41 42 48 53 54 55 41436 734 1790 1673 3 5 34 38 44 47 48 55 43332 3333 3334 3338 3 5 7 9 11 17 20 22 23 24 42114 3338 4941 3332 3 7 11 20 22 38 46 52 4267 442 1024 3587 4 5 21 22 26 34 43 54 4
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042977
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

нет ни clusterDimenstions : 11 ни clusterDimenstions : 10

И что? Разве это ошибка?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042982
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Все прочие цели - такие как выдать на экран "ВСЁ" я считаю ложными.


Ну я посмотрел в код в меру своих знаний java (11 у меня под рукой нет чтобы запустить), всё действительно очень похоже на правду. Я почему-то имел предубеждение, что там должна быть какая-то ML библиотека, а не вложенные циклы. Скорость впечатляет, но она наверное ухудшится, если уменьшить if (cnt >= 10) { . А так, оно не должно пропускать как при градиентном спуске, т.е. выдаст именно "ВСЁ".

Давайте я выложу полный отчот.

Ну я нашёл уже искомое:
Код: sql
1.
2.
3.
4.
5.
6.
7.
mysql> select * from miltbase1 where concat(' ',sequence) like '% 13 %14 %29 %38 %42 %44 %51 %63 %76%';
+------------+-------------------------------------------------------------+
| date       | sequence                                                    |
+------------+-------------------------------------------------------------+
| 31.05.2007 | 13 14 15 17 21 26 29 31 32 34 38 39 40 42 44 51 60 63 67 76 |
| 01.04.2010 | 13 14 15 21 26 29 35 38 41 42 44 45 51 55 60 62 63 69 76 79 |
+------------+-------------------------------------------------------------+



Я думаю оно будет в отчёте если сделать if (cnt >= 9) { .
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042983
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7-ки -
после первого захода поиска совпадений >=7
в таблице 2,432,768 строк

7-чисельные пересечения - появились 5 строк вхожденияStroki strIn XXX204 275 2739 4259 2311 2 26 36 37 52 69 79 52986 2813 2049 4169 829 6 13 24 28 32 34 54 53677 2194 1947 1779 4467 12 15 18 33 46 47 58 54298 4555 1803 1874 2029 6 9 10 24 28 36 64 5620 3332 3338 4499 3002 7 22 23 24 38 50 52 5827 1291 3545 2777 2748 16 23 28 31 47 48 65 5844 4434 4514 4079 4165 7 24 30 41 49 78 79 5

примерный тайминг формирования попарной таблицы пересечения множества чисел (во загнул, аж самому понравилось)
>=10 чисел 2мин /66тыс строк
>=9 чисел 4мин /288тыс
=8 8мин / 1млн
=7 18 мин / 2.4 млн строк
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043063
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но я тебе разработал софт. Он работает. Работает быстро. А ты - даже проигнорировал проверить результат?

Не ты первый, не ты последний.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043066
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Что-ж мне так не везёт, блин.

Везение - не нужно. Нужно работать головой и делать руками.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043069
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Пошёл 2 месяц "простенького задания". Но у меня есть хоть долгие, но решения.

Если бы некоторые сделали нормальное ТЗ и тестовые примеры, то уже получили бы работающее решение. Никто не может ничего сделать, потому что не может до конца понять, а что именно, собственно надо сделать.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043070
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но это-же глупо правда? Дело даже не в том что миллиард поместистя или нет. А будет ли эта структура полезна для поиска или избыточна.

Нет. Надо миллиард. Так заказчик сказал.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043133
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Как это всё переписать на mySQL?

Не нужно. Еще раз, а то может не понятно. НЕ_НУЖНО
Всё решается в памяти.

Помоожете? Пожалуйста.

https://jsfiddle.net/0kemgyhv/

Проверь выхлоп, пожалуйста и сделай вменяемое ТЗ. А то на заказчиков ты говорил, что не понятно что хотят, а сам не лучше.

Исходные

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
1.08.1966    5 7 8 15 22 23 27 34 37 39 40 41 43 44 50 55 57 58 62 70
2.08.1966   3 5 9 12 15 16 19 20 23 25 29 30 34 37 43 48 55 58 59 61
3.08.1966   2 3 5 12 15 21 23 24 26 28 36 37 38 39 50 53 55 59 66 68
4.08.1966   2 3 5 7 8 11 14 16 19 25 35 43 50 51 55 60 61 66 67 70
5.08.1966   2 8 11 12 14 17 18 20 21 28 36 43 50 53 55 56 59 62 64 66
6.08.1966   2 5 10 11 15 16 18 19 27 29 30 32 33 35 42 43 45 62 63 65
7.08.1966   5 6 7 8 16 21 27 30 39 46 49 50 51 53 54 58 62 64 68 70
8.08.1966   1 2 3 7 9 11 12 13 15 17 20 24 26 28 34 45 48 49 61 66
9.08.1966   7 8 12 13 14 21 23 24 27 28 30 38 40 49 50 52 53 54 63 68
10.08.1966  1 3 5 7 9 10 14 21 23 27 31 34 45 46 47 48 51 52 64 65
11.08.1966  1 5 6 7 9 11 14 17 29 30 33 36 37 39 42 43 48 50 64 65
12.08.1966  2 9 11 12 13 17 18 23 25 27 33 38 40 44 45 46 47 52 64 66
13.08.1966  1 5 6 11 14 16 17 20 22 23 25 26 31 41 44 47 56 59 64 70
14.08.1966  3 5 9 19 24 25 26 27 28 33 34 40 45 50 53 55 59 63 64 66
15.08.1966  3 6 8 11 13 19 23 25 28 32 33 34 37 41 50 54 56 57 59 65
16.08.1966  2 3 5 7 15 23 28 29 32 37 38 46 49 50 52 53 59 60 61 62
17.08.1966  1 5 7 9 11 16 18 20 22 25 26 35 45 46 47 51 56 67 68 70
18.08.1966  11 15 16 22 25 28 29 32 34 35 42 43 47 49 52 53 54 57 62 63
19.08.1966  8 9 15 17 26 30 31 35 37 38 41 42 44 50 52 58 60 64 66 69
20.08.1966  4 6 8 15 16 17 18 24 26 33 34 35 36 37 42 44 50 54 65 69
21.08.1966  5 7 8 15 22 23 27 34 37 39 40 42 44 45 46 47 52 64 66 69
22.08.1966  5 7 8 15 22 23 27 34 37 39 40 71 72 73 74 75 76 77 78 79




Выхлоп

dates seq cnt1.08.1966;21.08.1966;22.08.19665 7 8 15 22 23 27 34 37 3961.08.1966;21.08.19667 8 15 22 23 27 34 37 39 4421.08.1966;21.08.19668 15 22 23 27 34 37 39 40 4421.08.1966;21.08.19667 15 22 23 27 34 37 39 40 4421.08.1966;21.08.19667 8 22 23 27 34 37 39 40 4421.08.1966;21.08.19667 8 15 23 27 34 37 39 40 4421.08.1966;21.08.19667 8 15 22 27 34 37 39 40 4421.08.1966;21.08.19667 8 15 22 23 34 37 39 40 4421.08.1966;21.08.19667 8 15 22 23 27 37 39 40 4421.08.1966;21.08.19667 8 15 22 23 27 34 39 40 4421.08.1966;21.08.19667 8 15 22 23 27 34 37 40 4421.08.1966;21.08.19665 8 15 22 23 27 34 37 39 4421.08.1966;21.08.19665 15 22 23 27 34 37 39 40 4421.08.1966;21.08.19665 8 22 23 27 34 37 39 40 4421.08.1966;21.08.19665 8 15 23 27 34 37 39 40 4421.08.1966;21.08.19665 8 15 22 27 34 37 39 40 4421.08.1966;21.08.19665 8 15 22 23 34 37 39 40 4421.08.1966;21.08.19665 8 15 22 23 27 37 39 40 4421.08.1966;21.08.19665 8 15 22 23 27 34 39 40 4421.08.1966;21.08.19665 8 15 22 23 27 34 37 40 4421.08.1966;21.08.19665 7 15 22 23 27 34 37 39 4421.08.1966;21.08.19665 7 22 23 27 34 37 39 40 4421.08.1966;21.08.19665 7 15 23 27 34 37 39 40 4421.08.1966;21.08.19665 7 15 22 27 34 37 39 40 4421.08.1966;21.08.19665 7 15 22 23 34 37 39 40 4421.08.1966;21.08.19665 7 15 22 23 27 37 39 40 4421.08.1966;21.08.19665 7 15 22 23 27 34 39 40 4421.08.1966;21.08.19665 7 15 22 23 27 34 37 40 4421.08.1966;21.08.19665 7 8 22 23 27 34 37 39 4421.08.1966;21.08.19665 7 8 23 27 34 37 39 40 4421.08.1966;21.08.19665 7 8 22 27 34 37 39 40 4421.08.1966;21.08.19665 7 8 22 23 34 37 39 40 4421.08.1966;21.08.19665 7 8 22 23 27 37 39 40 4421.08.1966;21.08.19665 7 8 22 23 27 34 39 40 4421.08.1966;21.08.19665 7 8 22 23 27 34 37 40 4421.08.1966;21.08.19665 7 8 15 23 27 34 37 39 4421.08.1966;21.08.19665 7 8 15 27 34 37 39 40 4421.08.1966;21.08.19665 7 8 15 23 34 37 39 40 4421.08.1966;21.08.19665 7 8 15 23 27 37 39 40 4421.08.1966;21.08.19665 7 8 15 23 27 34 39 40 4421.08.1966;21.08.19665 7 8 15 23 27 34 37 40 4421.08.1966;21.08.19665 7 8 15 22 27 34 37 39 4421.08.1966;21.08.19665 7 8 15 22 34 37 39 40 4421.08.1966;21.08.19665 7 8 15 22 27 37 39 40 4421.08.1966;21.08.19665 7 8 15 22 27 34 39 40 4421.08.1966;21.08.19665 7 8 15 22 27 34 37 40 4421.08.1966;21.08.19665 7 8 15 22 23 34 37 39 4421.08.1966;21.08.19665 7 8 15 22 23 37 39 40 4421.08.1966;21.08.19665 7 8 15 22 23 34 39 40 4421.08.1966;21.08.19665 7 8 15 22 23 34 37 40 4421.08.1966;21.08.19665 7 8 15 22 23 27 37 39 4421.08.1966;21.08.19665 7 8 15 22 23 27 39 40 4421.08.1966;21.08.19665 7 8 15 22 23 27 37 40 4421.08.1966;21.08.19665 7 8 15 22 23 27 34 39 4421.08.1966;21.08.19665 7 8 15 22 23 27 34 40 4421.08.1966;21.08.19665 7 8 15 22 23 27 34 37 4421.08.1966;22.08.1966;21.08.19667 8 15 22 23 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 8 15 22 23 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 15 22 23 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 22 23 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 23 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 22 27 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 22 23 34 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 22 23 27 37 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 22 23 27 34 39 4041.08.1966;22.08.1966;21.08.19665 7 8 15 22 23 27 34 37 4043.08.1966;5.08.19662 12 21 28 36 50 53 55 59 6623.08.1966;14.08.19663 5 24 26 28 50 53 55 59 6623.08.1966;16.08.19662 3 5 15 23 28 37 38 50 5323.08.1966;16.08.19663 5 15 23 28 37 38 50 53 5923.08.1966;16.08.19662 5 15 23 28 37 38 50 53 5923.08.1966;16.08.19662 3 15 23 28 37 38 50 53 5923.08.1966;16.08.19662 3 5 23 28 37 38 50 53 5923.08.1966;16.08.19662 3 5 15 28 37 38 50 53 5923.08.1966;16.08.19662 3 5 15 23 37 38 50 53 5923.08.1966;16.08.19662 3 5 15 23 28 38 50 53 5923.08.1966;16.08.19662 3 5 15 23 28 37 50 53 5923.08.1966;16.08.19662 3 5 15 23 28 37 38 53 5923.08.1966;16.08.19662 3 5 15 23 28 37 38 50 5926.08.1966;18.08.196611 15 16 29 32 35 42 43 62 6327.08.1966;9.08.19667 8 21 27 30 49 50 53 54 68210.08.1966;21.08.19665 7 23 27 34 45 46 47 52 64212.08.1966;21.08.196623 27 40 44 45 46 47 52 64 66213.08.1966;17.08.19661 5 11 16 20 22 25 26 47 56213.08.1966;17.08.19665 11 16 20 22 25 26 47 56 70213.08.1966;17.08.19661 11 16 20 22 25 26 47 56 70213.08.1966;17.08.19661 5 16 20 22 25 26 47 56 70213.08.1966;17.08.19661 5 11 20 22 25 26 47 56 70213.08.1966;17.08.19661 5 11 16 22 25 26 47 56 70213.08.1966;17.08.19661 5 11 16 20 25 26 47 56 70213.08.1966;17.08.19661 5 11 16 20 22 26 47 56 70213.08.1966;17.08.19661 5 11 16 20 22 25 47 56 70213.08.1966;17.08.19661 5 11 16 20 22 25 26 56 70213.08.1966;17.08.19661 5 11 16 20 22 25 26 47 70219.08.1966;20.08.19668 15 17 26 35 37 42 44 50 692


Еще раз говорю, cnt - не знаю, что такое, я сделал пары записей. Совпадения по 10 хардкод, везде хардкод, надо проверить комбинатор и сделать запись в файл, а оттуда можешь засунуть куда захочешь. Ошибки могут быть не существенные. Я тебе еще тогда говорил, проверяй выхлоп, но нет, не хочу, хочу еще 2 недели с mysql хернёй страдать.
Сделал, чтобы тебе ничего не надо было разворачивать. Тупо ссылка на jsfiddle выше. Просто нажми это.
Еще одна на всякий случай
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043195
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброе утро в Доме-2
6-ки
записей после поиска пар пересечения 6 чисел в множествах
COUNT(*)
4,864,490
6-чисельные пересечения - появились 7 строк вхождения1353 3241 1731 3634 3700 3598 2405 9 24 38 63 65 66 74547 2906 1659 1430 1950 1148 505 4 8 10 37 54 67 7

тайминг 8часов 30 мин!!!!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6-рки и выше. Тоже приблизительно 4 миллиона. Алгоритм работал 1 минуту.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  { clusterId : '49,51,52,53,54,60', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [970, 3918] }
  { clusterId : '14,19,49,52,53,54', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [970, 2988] }
  { clusterId : '19,20,21,22,49,79', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [3879, 4827] }
  { clusterId : '10,18,19,20,21,22', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [607, 2969] }
  { clusterId : '18,19,20,21,22,58', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [3410, 4235] }
  { clusterId : '18,19,20,42,53,54', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [607, 4441] }
  { clusterId : '20,21,22,50,51,65', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [22, 2831] }
  { clusterId : '22,50,51,52,53,65', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [3462, 3964] }
  { clusterId : '19,50,52,53,54,69', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [155, 2688] }
  { clusterId : '18,19,21,28,52,54', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [859, 3075] }
  { clusterId : '20,21,50,51,54,62', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [2929, 4697] }
  { clusterId : '20,21,22,30,50,51', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [1174, 4946] }
  { clusterId : '18,20,51,53,54,78', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [73, 1271] }
  { clusterId : '20,21,22,50,51,78', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [2371, 2831] }
  { clusterId : '16,18,20,21,22,51', clusterDimenstions : 6, chromosomesInCluster : 2, chromosomePositions : [2394, 4235] }
  // ElapsedTime      : 59832 ms, 
  // maxClusterDimensions : 17, 
  // maxChromosomesInCluster : 7 
  // clusters         : 4782087
}
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043213
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Выше вы писали что у вас нет решения, а есть направления и показ пути и пр. И я не стал вообще смотреть на ваши коды.

Так у вас есть решение?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043215
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моё решение - не в том виде в котором ты хотел. Но зрячий увидит в нём алмаз.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043217
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ок. Тогда обязательно посмотрю. - Как будет время на драгоценности.
Мне сейчас решение надо.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043222
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как будет угодно.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043230
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
innodb_buffer... = 3G
8час.
вот над этим и надо думать, если делать в MySQL, что ждет в ближайшем будущем
так как в течении месяца добавятся 30 записей и т.д.
все опять начнет тормозить
постоянным увеличением памяти не отделаешься.
таблица V=1,4G на диске 1,9G
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE otvet (
  id1 int DEFAULT NULL,
  id2 int DEFAULT NULL,
  strin char(100) DEFAULT NULL,
  bin10 binary(100) DEFAULT NULL,
  XXX int DEFAULT NULL
);
ALTER TABLE otvet
ADD INDEX IDX_otvet_strin (strin);

ALTER TABLE otvet
ADD INDEX IDX_otvet_XXX (XXX);


наполнение пару строк
id1 id2 strin bin10 ХХХ1 11 14 17 21 26 29 32 34 42 76 здесь строка из 01 длиной 100 91 25 13 15 17 29 31 32 34 38 51 60 76 здесь строка из 01 длиной 100 11
запрос простой влоб
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT GROUP_CONCAT(t.id), t.strin, COUNT(*) AS xxx FROM 
(SELECT o.id1 AS id, o.strin FROM otvet o WHERE o.XXX = 6
UNION 
SELECT o.id2 AS id, o.strin FROM otvet o WHERE o.XXX = 6) AS t
GROUP BY t.strin
HAVING XXX>=5
ORDER BY xxx DESC, 1;



имхо, вот на этом этапе надо пробовать сбросить подзапросы в табл MEMORY
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043235
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это решение для победителей лотереи "6 из 20" , если кто пропутил
выиграло 14 билетов (по 7 билетов в 2ух комбинациях)
утешительный приз 1 евро/час, запрос работал 8 часов, значит выигрыш 8 евро/час
6-чисельные пересечения - появились 7 строк вхождения1353 3241 1731 3634 3700 3598 2405 9 24 38 63 65 66 74547 2906 1659 1430 1950 1148 505 4 8 10 37 54 67 7
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043236
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
вот на этом этапе надо пробовать сбросить подзапросы в табл MEMORY

Можно просто сразу сбросить всё в MEMORY не приплетая сюда mysql. На том же пёрле есть словари. Просто берешь и наполняешь словарь, пока пёрл не крякнет. Потом переписываешь на что-то, что не так жрёт память. Зачем вы вообще вцепились зубами в бд? На текущем этапе она не нужна вообще. Необходимость появится, когда там будет больше 50-100к исходных записей.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043238
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, а пробовал таблицу в MyISAM переключить?
Будет быстрее вставка или выборка?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043239
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

ну не я же вцепился в БД)
о Перле ничего не скажу, я Перла не знаю совершенно. Можно там хранить данные как в БД?
В БД мы можем хранить сравнительные пары.
Для каждой новой строки добавляем пары только для новой строки. Это будет продолжительное время недолгой операцией.
Поэтому нет смысла засовывать сразу в память всю таблицу пар.
Все это наполнение - первичное, "завтра" его делать не надо.
Весь затык - в последнем "свертывании".
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043240
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Будет быстрее вставка или выборка?

Раза в 2 будет быстрее, кмк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043242
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Alex_Ustinov, а пробовал таблицу в MyISAM переключить?
Будет быстрее вставка или выборка?
вставка меня не волнует, это больше зависит от дисков а выборка вряд ли будет быстрее

выше описал, что в данной задаче - это накопительная функция
Выборка большая, вопрос в том где эти данные обабатывает MySQL. ворочает в памяти или кидает в темпы.
Я не спец в тюнинге. Может позже попробую в MyISAM.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043243
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Можно там хранить данные как в БД?

Там не надо их хранить. Есть словарь - это типа таблица с ключом. Всё, больше ничего для этой задачи не надо.
Alex_Ustinov
Поэтому нет смысла засовывать сразу в память всю таблицу пар

Пары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.
Alex_Ustinov
Весь затык - в последнем "свертывании".

"Свёртывание", если это то, про что я думаю, делается проще. У нас уже есть пары и набор совпавших чисел. Этот набор скидываем в комбинаторную функцию, которая выдаёт нам n наборов по 10 чисел. Каждый набор - это ключ. Добавляем этот ключ в словарь вместе с парой дат. Всё. Если надо в другом виде - развёртываем словарь в таблицу, где будет пара дат (или еще чего угодно) и ключ-последовательность. Когда начнёт не влазить в память, придётся прыгать с запросами и кэшами, но это произойдёт еще не скоро.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043244
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

авторПары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.да, это основная рабочая таблица в данном варианте решения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043246
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Я вообще тащусь со всей этой истории. Андрейка взял заказ за 100 евро, сделать не может, а весь форум вокруг него бегает, пытается решить простую задачу изначально проблемным способом, от которого задача становится неподъёмной. Будут лишние сто евро, тоже закажу у него что-нибудь.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043247
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
да, это основная рабочая таблица в данном варианте решения

Сколько там записей выходит с теми данными, которые он прислал?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043248
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Так у вас есть решение?

У меня есть решение уже две недели как. Да что это меняет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043257
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить (по идее можно через pipeline функции). Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043258
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
crutchmaster,

авторПары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.
да, это основная рабочая таблица в данном варианте решениявыкладки выше - для 6-ти чисельных совпадений >4 млн если правильно запомнил
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043259
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить. Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.
какие перестановки? этот этап пройден через побитовое сравнение, мы возвращаемся в начало?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043261
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
какие перестановки? этот этап пройден через побитовое сравнение

Nyet. После побитового у нас только пары записей в которых совпало больше n чисел, дальше из этих n чисел надо делать все уникальные выборки по k чисел. А потом уже группировать эти выборки и считать сколько пар туда попало и каких.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043262
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Ну она сама влезет. А для перестановок уже что-то придётся мутить, возможно. Хотя не факт.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043264
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить (по идее можно через pipeline функции). Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.

Вот. Приколись.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table clusters(
  f1 char(1), // 1 - if true, else null
  f2 char(1), 
  .....
  f20 char(1)
  list varchar2(4000); // "3333,3334...."
);

create bitmap index i1 on clusters(f1);
create bitmap index i2 on clusters(f2);
.....
create bitmap index i20 on clusters(f20);


Далее сюда надо влить либо результат с МайСкл. Либо результат с моего репорта в формате *.json5 образцы которого
я прикладывал.

У кого есть поднятый инстанс Оракла? Проверте pls. Здесь важно чтоб оптимизатор внутри плана указал
что индексы активировались. В ораклах такие штуки эффективны как раз чем больше полей с низкой
кардинальностью в WHERE - тем лучше. Тем биткартовый индекс эффективнее.

Код: sql
1.
WHERE i1='1' and i2='1' and i3='1' ...... 



Далее одним простым запросом мы ищем мета-кластер который покроет все суб-кластеры и выгребем все
билетики в полях List.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043267
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Alex_Ustinov
какие перестановки? этот этап пройден через побитовое сравнение

Nyet. После побитового у нас только пары записей в которых совпало больше n чисел, дальше из этих n чисел надо делать все уникальные выборки по k чисел. А потом уже группировать эти выборки и считать сколько пар туда попало и каких.
ок, понял. У меня другой алгоритм. Допустим ищем 8-ки
1. Получили пары совпадений из 8-ми и выше
2. далее я делаю гроуп бай по строке совпадения.
3. Допустим получили максимум совпадений в 9-ти чисельной строке.
4. Суть в том что и для 8-ми и для 9-ти чисельного совпадения максимальное кол-во пересечений будет именно в этой строках. именно полученную 9-ку надо разложить в 8-ку
т.е. у меня операция перестановок нужна только при формировании ОТВЕТА

Поэтому я не раскручиваю сразу все пары в нужные 8-ки на этапе (1.), это достаточно сделать после этапа (3)
Т.е. самым накладным у меня является - гроуп бай.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043268
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо пробовать в PostgreSQL
там GROUP BY должен по другому
или назовем по другому - надо оптимизировать GROUP BY
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043275
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
надо пробовать в PostgreSQL
там GROUP BY должен по другому
или назовем по другому - надо оптимизировать GROUP BY

Дык чтоб оптимизировать надо знать куда двигаться. Покажи какой был план в MySQL.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043278
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmasterЭтот набор скидываем в комбинаторную функцию, которая выдаёт нам n наборов по 10 чисел. я бы назвал это решением "влоб" (разложением на конечные наборы) на втором этапе, теоретически это же очень много. Допустим ищем не 10 а 7 или 6 чисел.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043281
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

"id""select_type""table""partitions""type""possible_keys""key""key_len""ref""rows""filtered""Extra""1""PRIMARY""<derived2>"null"ALL"nullnullnullnull"4647356""1000""Using temporary; Using filesort""2""DERIVED""o"null"ref""IDX_otvet_XXX""IDX_otvet_XXX""5""const""2323678""1000"null"3""UNION""o"null"ref""IDX_otvet_XXX""IDX_otvet_XXX""5""const""2323678""1000"nullnull"UNION RESULT""<union23>"null"ALL"nullnullnullnullnullnull"Using temporary"
обычный план
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин... а че оно в виде дерева не показывается? Как в Ораклах или Постгресах.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043296
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-по-нятненко... А если заменить на


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT GROUP_CONCAT(t.id), t.strin, COUNT(*) AS xxx FROM 
(SELECT o.id1 AS id, o.strin FROM otvet o WHERE o.XXX = 6
 UNION ALL
SELECT o.id2 AS id, o.strin FROM otvet o WHERE o.XXX = 6) AS t
GROUP BY t.strin
HAVING XXX>=5
ORDER BY xxx DESC, 1;



Стоимость понижатеся?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043305
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

конечно просто UNION это DISTINCT
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043309
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может в этом и суть. Давай глянем что возвращает верхняя и нижняя части. Может удастся схитрить.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043320
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

надо join ть
я же показываю влоб через Union.
это отрабатывается быстро
Код: sql
1.
SELECT o.id1 AS id, o.strin FROM otvet o WHERE o.XXX = 6

UNION ALL в подзапросе по логике не проходит
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043339
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой то сбой был
5мин. group By
может буфер "разогрелся"
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043384
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй на Постгресе конечно. Но мне кажется что задачу на DBMS-ке тоже надо решать с привлечением
биткарт. Я имею в виду 128-битное целое как базовый поисковой тип и операции AND + BIT_COUNT
как только есть любая возможность.

Я даже думаю что Perl будь у него такая возможность показал - бы сравнительно терпимый результат
если уйти от строк и коллекций к нормальным регистрам процессора и быстрым булевым операциям.

Кто знает Perl, есть ли там поддержка такого?

Собственно кто-то умный еще 1 месяц назад Андрею ванговал про bitwise operations но его светлый
голос потонул в пучине каких-то загрузок и таблиц.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043403
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

уже получили пары (неважно как BIT_COUNT() или перебором множеств), т.е. это не проблема
вопрос - дальше что?
я группирую по пересечению множеств (по совпадению строк)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальше что? Получить бабос от шефа.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043443
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
бесконечную масштабируемость по размеру вектора хромосомы


Я ещё немного подумал и мне кажется тут может быть проблема (не с этим датасетом, а вообще). Сейчас получается, что весь датасет занимает в закодированном виде около 64Кб. Т.е. умещается весь в кеш первого уровня хорошего процессора. Отсюда такая милота, как 10млн. сравнений в секунду.

С увеличением размера вектора видимо придётся увеличивать и максимальное значение, которое надо хранить, иначе значений будет не хватать, а для этого нужно увеличить INITIAL_BITSET_SIZE. По идее это дожно приводить к более-менее линейному росту времени выполнения само по себе. Но вдобавок, оно может так дорасти до того что не будет больше помещаться в кеш и это уже должно привести к сильному росту времени выполнения (но видимо когда-то выйдет опять на линейное).

Было бы интересно попробовать проверить эти измышления увеличивая INITIAL_BITSET_SIZE и возможно добавляя цифры перед 20-м элементом в векторе, чтобы он становился в диапазоне 101-200 или 1001-1100, а не 1-100. Но у меня нет пока времени, если есть интерес, попробуйте сами.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043468
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я немножко подустал от этой задачи. Уже хочется переключится на что-то другое.

И сама тема лотерей и комбинаторик очень быстро надоедает. Да и что искать в ней. Если распределение
изначально идеально - какие задачи ставить? Быстрый поиск?

Насколько быстрый? Какой ценой? И следующий шаг какой?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043715
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица t3. Первый проход. 102 сек.



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
mysql> select * from t3 where XXX>13;
+------+------+------------------------------------------+----------------------+------+
| id1  | id2  | u1                                       | u                    | XXX  |
+------+------+------------------------------------------+----------------------+------+
|  160 | 2504 | 48,44,42,38,32,30,26,16,12,10,4,1        | 72,69                |   14 |
|  531 | 2093 | 50,39,34,31,24,13,11                     | 75,71,69,62,58,56,54 |   14 |
|  760 | 2616 | 42,41,36,32,25,19,18,17,13,7,4,3         | 76,64                |   14 |
|  982 | 2950 | 42,40,35,34,33,28,17,10                  | 79,77,75,73,69,51    |   14 |
| 3192 | 4827 | 49,38,36,30,28,26,22,21,20,3             | 79,62,61,53          |   14 |
| 3199 | 3587 | 50,46,34,28,26,22,5,4,3,2                | 79,67,55,53          |   14 |
| 3332 | 3338 | 50,46,44,39,38,24,23,22,20,17,11,9,7,5,3 | 63,52                |   17 |
+------+------+------------------------------------------+----------------------+------+
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043719
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Полное совпадение с моим результатом:

22276759

У кого ещё есть > 14 для проверки?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043723
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

перечитай последние 6 страниц, давно уже многие подсчитали
22276747
и далее смотри уже выложены решения по 9-кам 8-кам 7-кам и 6-кам
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043725
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем u1 и u?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043731
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде пройденный этап.

Код: sql
1.
  { clusterId : '3,5,7,9,11,17,20,22,23,24,38,39,44,46,50,52,63', clusterDimenstions : 17, chromosomesInCluster : 2, chromosomePositions : [3332, 3338] }
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043760
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
а зачем u1 и u?



Потому что двоичное у меня только до 64-х бит
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043762
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

не надо BIT
используй BINARY(100) и пиши туда все сразу
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043765
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

А чем лучше?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043768
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

ну дальше не надо конкатенацию делать для сравнения, сравниваешь одно поле, я это уже писал 200км назад
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043793
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я обрезал аутпут потому что мой отчот просто в форум не пролезал.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043823
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я обрезал аутпут потому что мой отчот просто в форум не пролезал.


А 6-ки у Вас за сколько считаются?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043835
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109
О, круто! Процес оказывается ещё в самом разгаре .. то есть ещё никто не выложил готовое решение ТС-у с доплатой?!? :D


Мое решение

Запуск
Код: plaintext
FindDNKGroup.exe miltbase1.txt 7

7-ки считает за 54 секунды на стареньком ноутбуке

Код: plaintext
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.
Loading from file "miltbase1.txt"...
  > 5000 records loaded (20 ms, 0.00033 min)
Prepare data...
  > 2419569/2432768 unique records prepared (3000 ms, 0.05000 min)
Creating permutations...
  > 31154224 records add (26450 ms, 0.44083 min)
Finding winners...
  | 3 12 21 41 58 71 77 => 6: 21.03.2009 21.06.2012 05.12.2013 25.11.2017 28.04.2019 04.08.2019 
  | 9 13 20 34 39 69 77 => 6: 28.10.2007 14.06.2009 18.09.2014 09.03.2018 03.07.2019 22.12.2020 
  | 2 7 27 54 63 70 79 => 6: 16.03.2015 18.09.2015 15.06.2018 24.10.2018 12.07.2019 19.03.2020 
  | 10 45 55 70 71 73 76 => 6: 09.06.2008 29.05.2012 09.05.2014 24.07.2015 17.09.2015 15.03.2018 
  | 3 9 15 26 64 75 77 => 6: 02.08.2013 17.02.2014 25.04.2014 12.03.2015 03.11.2018 16.12.2020 
  | 5 9 11 17 22 23 24 => 6: 13.07.2016 14.07.2016 15.07.2016 19.07.2016 22.02.2018 26.04.2018 
  | 12 15 36 46 57 59 77 => 6: 28.12.2009 03.02.2010 05.06.2010 26.08.2011 02.07.2014 29.10.2019 
  | 3 34 48 49 62 64 73 => 6: 26.10.2007 07.05.2008 24.12.2008 20.12.2018 05.03.2019 01.08.2020 
  | 9 23 38 41 55 64 69 => 6: 06.10.2007 23.07.2009 04.09.2011 11.05.2013 15.03.2014 31.12.2020 
  | 9 12 28 44 47 77 79 => 6: 07.03.2009 10.09.2011 06.08.2012 17.12.2014 26.01.2016 17.11.2019 
  | 1 10 19 33 48 53 62 => 6: 09.03.2008 16.11.2012 15.06.2014 11.10.2014 26.07.2015 10.08.2016 
  | 9 23 28 33 55 61 65 => 6: 28.07.2010 18.11.2011 16.08.2015 27.08.2015 21.06.2016 12.01.2021 
  | 4 8 20 27 29 46 47 => 6: 17.09.2008 02.06.2011 13.12.2014 09.11.2016 12.05.2018 20.10.2020 
  | 15 16 17 22 37 44 68 => 6: 01.02.2010 28.09.2010 29.04.2011 08.01.2013 21.09.2016 05.10.2018 
  | 5 12 21 24 26 35 36 => 6: 09.11.2008 20.06.2012 11.04.2013 07.09.2016 16.05.2017 26.11.2017 
  | 9 16 19 45 52 69 70 => 6: 23.01.2008 10.01.2009 13.05.2009 31.12.2009 23.07.2013 28.09.2018 
  > 16 records finded (5900 ms, 0.09833 min)
==< OK (52560 ms, 0.87600 min)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043839
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
mahoune, miksoft заняты
mahoune уже давно не модерирует.
А я болею и сил вчитываться особо нет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043842
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик частично почистил и закрываю.

miltorg , пожалуйста, не создавайте больше топиков по общим вопросам в подфоруме по MySQL.
Буду либо переносить по собственному разумению, либо просто удалять.
...
Рейтинг: 0 / 0
471 сообщений из 471, показаны все 19 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]