Ни на копейку не оптимизировал прошлый раз задачу поиска простых чисел. Сейчас мы займёмся этой не лёгкой работой. И хотелось бы реально увидеть результат оптимизации - "стало быстрее в n раз"
Но для начала нужно измерить время исполнения той программы что есть.
Мы уже использовали timer в команде randomize timer. Здесь же по этому таймеру будем измерять время выполнения кода.
Зафиксируем значение таймера до выполнения.. и после - разность и будет временем выполненя участка программы.
Вначале проэкспериментируем немного с таймером.
Измерим несколько раз время выполнения команды sleep - паузы в 1000 мс (секунда)
dim st as double
dim i as integer
for i =1 to 9
st =timer()
sleep 1000
print timer() - st
print "---------------------"
next i
sleep
И уже есть представление о точности - далее третьего знака не лезть)))
Запустил на домашнем компьютере (редактирую-дописываю пост) чуть иная картина
Операция деления для компьютера крепкий орешек был, во всяком лучае на первых ЭВМ,калькуляторах она в несколь раз давалась тяжелее
dim as double st, a
dim as integer i, j
a=99999999
for i =1 to 9
st =timer()
for j=1 to 100000:a=a/3:next j
print timer() - st
print "---------------------"
next i
sleep
Ну и быстродействие..в пресчёте на секунду - 100 млн операций деления. И точность четыре знака после запятой.
Производительность дома - почти в два раза быстрее...
Возвращаемся к простым числам
Измерим время нахождения хх чисел - в двух вариантах: с выводом на экран и без него.
Вот код из прошлого примера
'''
dim as integer f
dim as longint i, k
for k=2 to 1000
f=0
for i=2 to k-1
if k mod i = 0 then f=1
next i
if f=0 then print k;
next k
sleep
'''
добавляем
'''
...
dim as double st
st=timer()
...
st=st-timer()
print
print st
sleep
'''
с выводом | без вывода | |
---|---|---|
без оптимизации | 46.26 | 43.83 |
если нашли делитель - exit for | 6.91 | 3.95 |
sqr(k) | 2.24 | 0.028 |
Вывод занимает чуть более 2 секунд, и не зависит от оптимизаций - логично ведь на вывод идёт одинаковое количество чисел.
А время расчётов уменьшилось в 20 раз.
Поиск простых чисел до миллиона занимает чуть больше чем половина секунды)))
✅
✅🤙 🚀
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
spinner, littleboo, ianboil, francisgrey, strecoza, mishka, sergiy, neo, vako, rbrown, andrvik, max-max, zoss, dimarss, kilobucks, ohlamoon, shuler, maksina, zlody, dr-boo, amikphoto, arsar, volv, vasilisapor2, nefer, turkish-r, renat242, markvial, nikalaich, status7, gryph0n, voltash, ladynazgool, sharps, cepera, rubin, francesco, exan, retoldname, stranniksenya, alikssandra, gapel, polyakov, galerina, acidgarry, aivanouski, oagalakova, borisss, candy777, optimist, yurchello, bammbuss, dmitrijv, manavendra, mr-nikola, ondantr, nerengot, dim447, vladsm, mirgais, varja, upper, prifix, abloud, dignityinside, foxycat, process, chugoi, nikulinsb, tulencha, amalinavia, kito-boy, vsebudethorosho, nikitosuna, izbushka, astramar, propoker, cryptovisitor, zelivsky, html, vredinka2345, benken, kash47, marina-spring, azarovskiy, funt33, samael27, kalter, maksh, mister-omortson, nightinga1e, apnigrich, siddxa, cryptobandera, doublingseason, necrogenesis, photofreediver, maryatekun, lologom, anykeycheg, prezza, yroslav94, akva22, tyi-ra, elcpa, karabum, dobrotanya, boliwar, veta-less, irkinmick, denispavlov, svetozarhobbot, archual, alexxela, burger-knig, marko44, cryptenthusiast, flint, charisma
Поэтому я тоже проголосовал за него!
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
Сюда приплывал Моби Дик