Факториал числа N = N!

0. Rustig 1533 27.06.20 15:22 Сейчас в теме
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2180 28.06.20 15:21 Сейчас в теме
ЧЯДНТ? 3 секунды для 50000!

	Т = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Р = 1;
	Для Ф = 2 ПО Число Цикл 
		Р = Р * Ф;
	КонецЦикла;
	Т = ТекущаяУниверсальнаяДатаВМиллисекундах() - Т;
	Сообщить(Т);
	Сообщить(Р);
Показать
Прикрепленные файлы:
3. Rustig 1533 28.06.20 15:23 Сейчас в теме
(1) все так! от железа много зависит.
4. starik-2005 2180 28.06.20 15:29 Сейчас в теме
(3) ну не в дофига же раз! У Вас лучший результат - это 9 сек для 50к!, если я правильно понял. Опыт копить - это сохранять в соответствие? Так будет разница, в итоге если есть 50к!, то 60к! рассчитается за время, нужное для расчета 10к! + поправки на точность, т.е. за условно 2 сек на Вашем железе.

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

Но в принципе статься интересная, заставляет пошевелиться )))
5. Rustig 1533 28.06.20 15:42 Сейчас в теме
(1) у вас процессор какой стоит? какое железо интересно
6. starik-2005 2180 28.06.20 15:57 Сейчас в теме
(5) 3600-я рязань на А320-й мамке с 3200-й не очень быстрой памятью (в части таймингов).
https://browser.geekbench.com/v4/cpu/15565815
7. starik-2005 2180 28.06.20 16:07 Сейчас в теме
(5)
$ cat fact.py
f = 1
for i in range(2,50000+1):
	f *= i
#print(f)

$ time python fact.py

real	0m0,400s
user	0m0,392s
sys	0m0,008s
Показать
2. starik-2005 2180 28.06.20 15:23 Сейчас в теме
По поводу рекурсии, то у 1С стек мы как-то мерили - 1748, если не ошибаюсь - дальше оут оф мемори...
8. Rustig 1533 28.06.20 16:15 Сейчас в теме
(6) вот и я не пойму, почему у меня долго
9. starik-2005 2180 28.06.20 16:16 Сейчас в теме
(8)
почему у меня долго
А что за проц?
10. Rustig 1533 28.06.20 16:26 Сейчас в теме
(9) в публикации картинка есть
11. starik-2005 2180 28.06.20 16:31 Сейчас в теме
(10) да, проц не быстрый, но не фатально медленный

https://browser.geekbench.com/v4/cpu/compare/15565815?baseline=10190769 - в сравнении с рязанью он всего в три раза медленнее, но ядро-то у него вполне себе интеловское, а эта задача не требует кеша почти, если мой код взять, так что должен в 3 раза дольше отрабатывать, что и показывает - 9 сек против 3 сек.
12. Rustig 1533 28.06.20 16:36 Сейчас в теме
(11) у вас управ. формы ? у меня на обычных формах...
ваш код 20 сек считал
платформа 1С:Предприятие 8.3 (8.3.15.1830)
13. Rustig 1533 28.06.20 16:39 Сейчас в теме
(11) вот замер производительности
Прикрепленные файлы:
14. starik-2005 2180 28.06.20 17:37 Сейчас в теме
(13) так при включенной отладке все становится сильно медленным...

Хотя.. У меня и при включенной отладке (50к всего итераций) те же три секунды...

В принципе оказалось не важно,в одну строку написано или нет - 3 сек.
Прикрепленные файлы:
16. Rustig 1533 28.06.20 17:52 Сейчас в теме
(14) да уж, вопрос вызывает, почему умножение на моем ноутбуке и платформе сильно медленне, чем на вашем компе и платформе. Если кто подскажет, то будет полезно на будущее.

Я сейчас пишу отчет - публикацию - я распараллелил алгоритм расчета деревом на 4 потока с помощью фоновых заданий - получилось ускорить расчет до 0 сек.
15. starik-2005 2180 28.06.20 17:49 Сейчас в теме
(13) да, факториал с деревом у меня на 1С считается как на питоне обычным алгоритмом почти - за 680 мс. Что-то у Вас с компом не то на мой взгляд. Не совсем понятно, ибо там кэш не юзается. Может вирусы работают? Или винда жрет ресурсы как не в себя...

ЗЫ: последний пример не пробовал, т.к. не нашел функцию ФакториалС...
17. Rustig 1533 28.06.20 17:53 Сейчас в теме
(15) я на сервере сегодня тестировал - результат примерно такой же , что и на ноуте. Поэтому думаю, что дело в платформе + на обычных формах.
Прикрепленные файлы:
18. starik-2005 2180 28.06.20 18:00 Сейчас в теме
(17) управляемые формы в части алгоритма дерева у меня действительно быстрее отработали, а вот обычный цикл - так же.

Хеон Ваш не быстрее I3 в этой задаче должен работать, т.к. примерно те же пиковые частоты. Плюс он очень древний и память у него очень медленная, что компенсирует разницу в частоте. Где-то какая-то хрень, ибо даже я не верю, что в линухе райзен 5 3600 работает в просто дофига раз быстрее Хеона и I3 этих поколений. Ну в 3 раза должен быстрее работать, ну в 4 максимум... Но не в 7!!!
Прикрепленные файлы:
20. Rustig 1533 29.06.20 10:15 Сейчас в теме
добавил расчет факториала с помощью параллельных вычислений https://infostart.ru/public/1257170/
19. Rustig 1533 28.06.20 23:28 Сейчас в теме
(15)
не нашел функцию ФакториалС


описана в Листинге "Классический + Соответствие".
21. FractonKireyev 30.06.20 15:03 Сейчас в теме
Не интересно. задача решена "в лоб". Кроме того, эта задача решена только для целых чисел (хотя на самом деле факториал рассчитывается для любого вещественного и комплексного числа, кроме целых отрицательных чисел). В интернете полно разных методов решения, и через интегралы, и через формулы, например:
https://ru.wikipedia.org/wiki/Факториал
https://habr.com/ru/post/255761/
и так далее, список подобных ссылок огромный.
Попробуйте через какие-то формулы или интегралы - даже на первый взгляд скорость для больших чисел будет на порядки выше.
22. Rustig 1533 30.06.20 15:43 Сейчас в теме
(21)
В интернете полно разных методов решения, и через интегралы, и через формулы, например:
https://ru.wikipedia.org/wiki/Факториал
https://habr.com/ru/post/255761/
и так


вы указали ссылки, которые уже представлены в публикации.
23. lvictor58 130 03.07.20 16:18 Сейчас в теме
Ну оч-чень нужная вещь для сведения дебета с кредитом!
24. Rustig 1533 03.07.20 18:37 Сейчас в теме
(23)
Ну оч-чень нужная вещь для сведения дебета с кредитом!


Ну мы разные люди, в принципе, и интересы у нас разные, :))))
я к примеру по вечерам иногда смотрю https://www.youtube.com/channel/UCU3fbWgaCRISDWcjgAT5RfA

песочниц разных на Инфостарте много, и я думаю каждый свою найдет со временем )))))))
Оставьте свое сообщение
Вопросы с вознаграждением