|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||||||||||
Потестируйте скорость работы класса больших чисел19.08.2015, 17:47. Показов 6184. Ответов 100
Метки нет (Все метки)
Ребятки, сделал себе небольшой классик для больших чисел.
Типа того:
Если у кого есть результаты, приведите их пожалуйста. *мне нравятся большие числа и женщины, но с числами интереснее.
0
|
|||||||||||
| 19.08.2015, 17:47 | |
|
Ответы с готовыми решениями:
100
Скорость работы id и класса
|
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
||||
| 20.08.2015, 05:55 [ТС] | ||||
![]() Пока пробую прикрутить в качестве оператора * Карацубу, чтобы маленько побыстрее было, а главное - чтобы память поменьше отъедало. Результат пока не радует. Примеры Карацуба-умножений в Инете - сплошная косятина.
0
|
||||
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
||
| 20.08.2015, 09:07 | ||
|
0
|
||
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||||||
| 20.08.2015, 10:24 [ТС] | |||||||
|
Добавлено через 11 минут Маленько улучшил факториал. В два раза. ![]()
После чего, попробую перенести часть функций на видеоадаптер. Надеюсь, с длинными числами он пошустрее будет.
0
|
|||||||
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
||
| 20.08.2015, 10:29 | ||
|
А если серьёзно, то при лёгком гуглинге обнаруживатеся такая вещь как NTL. Выглядит очень даже ничего
0
|
||
| 21.08.2015, 09:08 | ||
|
Добавлено через 16 часов 24 минуты Вставил ассемблерный кусок, выжал по-максимуму. Все равно уступает ТС в разы. Оказывается, ТС компилировал в 64битном режиме, а я в 32битном. И хотя для расчета частного/остатка у меня используется одна операция div(85% времени занимает), получается что 64битные регистры эффективней.
0
|
||
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||||||
| 21.08.2015, 18:03 [ТС] | |||||||
|
Тем временем, прикрутил в operator * умножение Карацубой. Факториал ускорился ещё в 2 раза. ![]() Чёта мало.. думал раза в 4 будет. Наверное, надо обратить внимание на деление: сейчас методом Ньютона-Рафсона делятся только большие числа. А деление большого на маленькое - "в столбик". На моём зачуханом кваде:
Ах да, факториал 100 тыс. - ужо не актуален. Выкладываем наши достижения для 1 миллион факториал!
0
|
|||||||
|
|
||
| 22.08.2015, 23:02 | ||
|
Поправка: 37 сотых с указанной точностью 100 знаков. Это не совсем верное измерение.
zer0mail, думаю что можно, но я не пробовал. Добавлено через 4 минуты
0
|
||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 22.08.2015, 23:02 | |
|
Так как вычислений много, а вывод в десятичной системе один, считать надо в двоичной, чтобы не было делений на каждой итерации.
0
|
|
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||||||
| 23.08.2015, 02:00 [ТС] | |||||||
![]() *обновлённый экзешник приложил.
0
|
|||||||
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||
| 23.08.2015, 02:29 [ТС] | |||
|
А так как минимальное хранилище это байт, это будет ~21 Мегабайт вместо 5. В общем, много-премного и с памятью будет совсем бяда.. ![]() Получить от GMP+MPFR вектор может и можно, но вряд ли за 37 сотых секунд.
0
|
|||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 23.08.2015, 13:07 | ||
|
0
|
||
|
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
|
|||||||
| 23.08.2015, 20:57 [ТС] | |||||||
|
* я вот тоже намедни сильно ускорил, да не тут-то было! Результаты хоть и похожи, да не совпадают. Сейчас попробовал сгенерить типовое число, примерно, какие будут использоваться.
То есть, клиент получит число для проверки в виде "2^77071069-1" и создавать его больше 2-х часов. Тут уж не до Люка-Лемера. ![]() Может я Карацубу неправильно прикрутил, а может ещё что.. посмотрю, конечно.. Плохо то, что поменяв что-то в библиотеке - не с чем сравнить. ![]() Кто-нибудь знает, нельзя ли откуда-нибудь скачать большое число (файл с циферками) ?
0
|
|||||||
| 23.08.2015, 23:22 | |||
|
Все же странно, что 64-битная арифметика в разы быстрее делит. У меня ведь тоже делимое находится в двух 32-битных регистрах и делится на делитель в третьем 32-битном регистре. Какая разница электронике - разбито 64битное число на 2 регистра или сидит в одном? Добавлено через 31 минуту Maple 2^77071069-1 считает и пишет меньше 2 секунд. Как они это делают?
0
|
|||
| 23.08.2015, 23:22 | |
|
Создание класса для работы с массивами чисел Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса:
ArrayList, скорость копирования больших структур, копирование по ссылке Реализация класса "Вектор" для работы с массивом чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|