У меня ещё быстрее этот паттерн до 1e5 посчитался:
Код:
*** last result computed in 1min, 1,781 ms.
*** last result computed in 1min, 1,845 ms.
Это время для двух запусков. Находки такие же. Ну то бишь найдено 22 кортежа за 62 секунды.
Код:
22/62*3600 = 1277 кортежей/час
Но 22 кортежа маловато. Надо бы не меньше сотни, чтобы сравнение было более корректным. Потому что у меня в этой серии было найдено 473 кортежа, о чём я ранее сообщал, хотя и не в этой теме.
Так что увеличиваю количество попыток i в 10 раз, до 1е6:
Код:
[249907, 287344, 253180, 213992, 267815, 163883]
[192497, 366409, 289151, 120242, 28004, 3514, 183]
? ##
*** last result computed in 12min, 53,031 ms.
Найдено 183 кортежа за 774 секунды. Обычно беру потолок чтоб не обольщаться.
Код:
183/774*3600 = 851 кортежей/час
Далее узнаю интервал счёта. Попросту командой print(n):
Код:
370265841550155055386075
3702652191320472895386075
Это для 1e5 и для 1e6 соответственно. Осталось записать эти данные в сравнительную табличку:
Код:
Серия 2^ Паттернов Счёт Найдено Время Скорость
посчитано от 0 до D(96,6) секунд D(96,6)/час
0-0-6-0-0-2! 1 37e23 183 774 851
0-0-6-0-0-2! 15 24 10e23 473 122 13957
Ну и далее простым делением получаю что скорость сложной программы в 16 раз выше, чем у простой.
То есть я сравнивал два поиска по двум разным программам на своём пустом компе в один поток.
Первая программа — только с 1-й фильтрацией, с одинарным шагом. Запускалась в интерпретаторе gp.
Вторая программа — с 7-ю фильтрациями, с 6-кратным шагом. Компилиция gp2c.
Возможно, позже ещё сравню не просто однотипные паттерны из одной серии, а именно одинаковые паттерны.