![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
![]()
Вроде как работает.
Код:
Остаётся понять, оптимален ли этот код? |
![]() |
![]() |
![]() |
#12 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,893
|
![]() |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
![]()
Что будет быстрее работать? Мой алгоритм, или
Код:
|
![]() |
![]() |
![]() |
#14 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,829
|
![]()
сделай цикл в миллион шагов и пусть считает корни от 1 до миллиона или все одинаковые бери. засеки время по таймеру.
потом trunc(sqrt(x)) в цикл запихни тот же и снова время засекай. так в сравнительном анализе и узнаешь, что быстрее.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
![]()
Пришлось даже 100 миллионов раз выполнить каждую функцию, чтобы был нормальный результат
И да - моя алгоритм сработал почти в 2 раза быстрее |
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
![]()
Сделал больше тестов. И вот что заметил: если число меньше 2^32 - то быстрее работает мой алгоритм
А если больше - то уже быстрее trunc(sqrt) Но правда я код который выше еще модернизировал как раз на то чтобы было меньше итераций если число небольшое |
![]() |
![]() |
![]() |
#17 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,893
|
![]() |
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
![]()
Моя функция Sqrt64 подгружается с юнита. А вот код тестирования
Суммирование корней я сделал потому что не знаю как именно работает оптимизация кода компилятором, потому сделал так чтобы эти данные использовались куда-то - следовательно точно не сокращались при оптимизации. Так же, Int64 не хотел использоваться как счётчик цикла, потому пришлось его "вручную" прибавлять Итог (на картинке): с числами до 2^32 мой код работает быстрее, а вот с числами после 2^32 - медленнее Код:
|
![]() |
![]() |
![]() |
#19 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,829
|
![]()
теперь запили отдельную библиотеку *.pas и скинь всем в тему. пусть используют, кто занимается расчётами.
и кстати, эту строки b:=b+k; тоже можно сделать через inc() - быстрее будет, там надо через запятую параметр k написать.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,589
|
![]()
Не думаю, что компилятор делает различие между двумя описаниями одного и того же действия. Анализировать сгенерированный код лень, конечно. По логике, там даже не будет вызова процедуры, а in-line вставка. Да и от версии компилятора зависит, видимо.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" | billiejean78 | JavaScript, Ajax | 1 | 03.09.2021 08:58 |
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" | Бахтиёр1916 | Windows | 1 | 05.04.2017 12:53 |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Вычисление квадратного корня вручную | 6AZblJlb | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 8 | 16.11.2011 04:02 |
Как "натянуть" сайт написанный вручную на CMS ? | zlo_999 | HTML и CSS | 3 | 01.02.2011 09:57 |