Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 71, 72, 73, 74, 75
 Re: Как писать быстрые программы
Yadryara в сообщении #1722824 писал(а):
Или он хорошо сделал и лучше не трогать? Не надо чинить то, что не сломано.

Да, раз работает, то и норм.
Было бы ещё лучше если бы компилируемая часть была набором функций, и параметры бы передавались обычным образом а не через внешние файлы, но это встречает неприятие с вашей стороны, так что пусть уже будет как есть.

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1722826 писал(а):
параметры бы передавались обычным образом а не через внешние файлы, но это встречает неприятие с вашей стороны,

Уже говорил: это не неприятие, это просто привычки.

Будет ли этот "обычный образ" так же эффективно бороться с переполнением стека? Не знаю.

Я вот сейчас как раз считаю с предпростыми до $2^{18}$ и приходится часто перезапускать, чуть ли не каждые полминуты вместо 45 минут как для $2^{16}$ для другой серии.

Вот скриншот сделал:

Код:
  *** init_Test_1: Warning: increasing stack size to 16000000.
  *** init_Test_1: Warning: increasing stack size to 32000000.
  *** init_Test_1: Warning: increasing stack size to 64000000.
  *** init_Test_1: Warning: increasing stack size to 128000000.
  *** init_Test_1: Warning: increasing stack size to 256000000.
  *** init_Test_1: Warning: increasing stack size to 512000000.
  *** init_Test_1: Warning: increasing stack size to 1024000000.

32,192 ms

Программа не успела превысить порог в 8192000000 — посчитала текущий юнит за 32 секунды и перезапустилась для счёта нового юнита. Как понимаю, при перезапуске стек очистился полностью.

 Re: Как писать быстрые программы
Yadryara в сообщении #1722829 писал(а):
Программа не успела превысить порог в 8192000000 — посчитала текущий юнит за 32 секунды и перезапустилась для счёта нового юнита. Как понимаю, при перезапуске стек очистился полностью.

Ну, вы делаете какие-то свои выводы о том что хорошо и что плохо :) Вы показываете верхушку айсберга (что память нарастает) но причина этого непонятна, так как остальной код секретный. Вам привычней всё валить в кучу, а не разделять на функции - окей, валите в кучу :) Пусть будет виновата "хвалёная убунта" :D

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1722831 писал(а):
Вам привычней всё валить в кучу, а не разделять на функции

Не согласен ни со словом "всё", ни с оборотом "валить в кучу". Например, алгоритм Полларда у меня реализован именно как функция.

Yadryara в сообщении #1722829 писал(а):
Будет ли этот "обычный образ" так же эффективно бороться с переполнением стека?

Ответа на вот этот вопрос не увидел. Возможно, вам трудно на него ответить.

wrest в сообщении #1722831 писал(а):
причина этого непонятна, так как остальной код секретный.

Для вас он совершенно не секретный, могу показать, если желаете.

 Re: Как писать быстрые программы
Yadryara в сообщении #1722833 писал(а):
Ответа на вот этот вопрос не увидел. Возможно, вам трудно на него ответить.

Не то что бы трудно, а просто невозможно ответить.

-- 21.04.2026, 11:46 --

Yadryara в сообщении #1722833 писал(а):
Для вас он совершенно не секретный, могу показать, если желаете.

Если это накладывает на меня обязательства держать код в секрете, то не надо.

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1722840 писал(а):
Если это накладывает на меня обязательства держать код в секрете, то не надо.

Я не вправе накладывать на вас обязательства.

Но вы говорили что не желаете разбираться в неудобочитаемом коде, в том числе в моём. А схематично я его описал как раз недавно, про 10 фильтраций рассказал.

 Re: Как писать быстрые программы
Yadryara в сообщении #1722843 писал(а):
Но вы говорили что не желаете разбираться в неудобочитаемом коде, в том числе в моём.

Это да, в неудобочитаемом не очень бы хотелось разбираться. :D
Ну, для повышения удобочитаемости (в т.ч. для вас самого) вы можете попросить ИИ отформатировать для вас текст и добавить комментарии
Yadryara в сообщении #1722843 писал(а):
А схематично я его описал как раз недавно,

Ну вот вам тогда схематичный ответ: вероятно, память утекает в длинном цикле со многими итерациями. :D

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1722844 писал(а):
Ну, для повышения удобочитаемости (в т.ч. для вас самого) вы можете попросить ИИ отформатировать для вас текст

То-то и оно, что для меня самого удобно так как есть. Разве что закомментированных строк порой становится слишком много. Чищу периодически. А в остальном всё устраивает. Именно в том смысле, что я не путаюсь.

Вмешательство кого-либо постороннего (ИИ того же) обычно только ухудшает ситуацию. Это же неслучайно говорят: "Ну ты чё, не знаешь где гвозди лежат?! В банке из-под сахара, где написано "СОЛЬ" !!" :-)

 Re: Как писать быстрые программы
Yadryara в сообщении #1722851 писал(а):
То-то и оно, что для меня самого удобно так как есть.

Такой разговор у нас уже был, и с тех пор небеса на землю не падали. Раз такое дело, то с утечкой памяти, в таком случае:
wrest в сообщении #1712133 писал(а):
разбирайтесь в вашем коде сами 8-)

Прошу понять и простить. :facepalm:

 Re: Как писать быстрые программы
Аватара пользователя
Вот именно, что такой разговор у нас уже был, и я ещё тогда понял и простил.

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

Между тем, посчитал длину 12:

Код:
Серия            2^      Комплектов       Счёт     Найдено      Время     Ср. скорость
                          посчитано    от 0 до    D(96,12)     секунд        цеп/сутки

0-0-11-1-0-5!    16      3! * 6! 15       1e45         111      41171              233
0-0-11-1-0-5!    17      3! * 6!  3       1e45        (111)     37495+375          253 Э
0-0-11-1-0-5!    18      3! * 6!  4       1e45        (111)     37800+378          251 Э

0-0-12-0-0-5!    16      3! * 7!  5       1e46        (123)     34434+344          306 Э
0-0-12-0-0-5!    17      3! * 7! 90       1e46         123      31171              341
0-0-12-0-0-5!    18      3! * 7! 90       1e46         123      30612              347
0-0-12-0-0-5!    19      3! * 7!  8       1e46        (123)     33233+332          317 Э

0-1-11-0-0-5!    16      3!*7!*1 20       1e47        (101)     32160+322          267 Э
0-1-11-0-0-5!    17      3!*7!*1 30       1e47        (101)     28320+283          305 Э
0-1-11-0-0-5!    18     3!*7!*1 800       1e47         101      27343              319
0-1-11-0-0-5!    19      3!*7!*1 25       1e47        (101)     28560+286          303 Э

1-0-11-0-0-5!    17  3!*7!*1*1  100       1e49        (115)     31200+312          315 Э
1-0-11-0-0-5!    18  3!*7!*1*1 2400       1e49         115      30705              324
1-0-11-0-0-5!    19  3!*7!*1*1  100       1e49        (115)     30480+305          323 Э

Э — применялась экстраполяция, например 3 --> 15

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

То есть один вариант для каждой серии считался полностью, а для других вариантов из той же серии считалось меньше комплектов.

Например, 100 комплектов вместо 2400. По этим 100 комплектам я определял среднюю скорость счёта комплекта, а затем умножал на 2400 и накидывал 1% чтоб не обольщаться. Ну и предполагал что для другого количества предпростых найдётся такое же количество цепочек, что ранее многократно выполнялось.

Не говорю, что этот способ самый лучший, но пока так.

Ну и квинтэссенция этого счёта — сводная таблица по 7 различным длинам:

Код:
Кортеж           Серия      2^      Комплектов       Счёт     Найдено      Время     Скорость
                                     посчитано    от 0 до     D(96,L)     секунд     корт/сут

D(96,6)    0-1-5-0-0-2!     15   3!*4!*1    24       1e25         292         57       442611
D(96,7)    0-1-6-0-0-3!     16   2!*5!*1    48       1e27         100         51       169412
D(96,8)    1-0-7-0-0-3!     17   2!*6!*1*1 130       1e34         112        240        40320
D(96,9)    1-0-8-0-0-4!     17   2!*6!*1*1 130       1e37         108        461        20241
D(96,10)   1-0-9-0-0-4!     17   3!*7!*1*1 400       1e41         163       2722         5174
D(96,11)   1-0-A-0-0-5!     18   3!*7!*1*1 600       1e44         235       9816         2068
D(96,12)   0-0-C-0-0-5!     18   3!*7!      90       1e46         123      30612          347

*А — 10
*С — 12

 Re: Как писать быстрые программы
Yadryara в сообщении #1722935 писал(а):
Ну и квинтэссенция этого счёта — сводная таблица по 7 различным длинам:

Ну давайте погадаем. На длине 13 скорость будет 58, а на длине 14 скорость будет 23
Запомним этот твит :D

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1722960 писал(а):
Ну давайте погадаем. На длине 13 скорость будет 58, а на длине 14 скорость будет 23
Запомним этот твит :D

Благодарю. Да уж, теперь вряд ли пропадёт.

Помните, я спрашивал не после 7 различных длин, как сейчас, а после 3-х:

Yadryara в сообщении #1721942 писал(а):
Что можете сказать по поводу D(96,9) ? Можно ли дать какой-то прогноз?

Тогда никто прогноз давать не захотел. И вообще никто ничего не сказал.

А сейчас, вы не будете отрицать, что какая-никакая картина постепенно складывается?

Мне ещё очень интересно какая серия будет выигрывать. Серия с 1-м простым уже утратила лидирующие позиции, и, видимо, будет отставать. Также предполагаю, что серия с максимальным количеством 8 делителей (pqr) будет утрачивать лидерские позиции. И в лидерской серии будет увеличиваться количество 16 делителей (pqrs).

Кстати, я действительно начал считать D(96,13) пока что в один поток. Пока нашлись всего лишь 9 кортежей. Но я, конечно, предпрогноз уже посчитал:

Код:
Серия            2^      Комплектов       Счёт     Найдено     Время   Секунд /     Скорость
                          посчитано    от 0 до    D(96,13)    секунд   комплект    цеп/сутки

0-0-12-1-0-5!    17      3! * 7! 20       1e46           9      5707     285.32          136
0-0-12-1-0-5!    18      3! * 7! 10       1e46           4      2841     284.06          122

И хотел спросить, как с помощью батников запускать в разных окнах. У меня путь к Убунте сложный.

 [ Сообщений: 1122 ]  На страницу Пред.  1 ... 71, 72, 73, 74, 75


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group