(05-22-2022 01:34 AM)anyfoo Wrote: (05-21-2022 11:47 PM)matalog Wrote: I have not experienced programming languages that have different run-times in the same programs!
Oh, but there are plenty which do just by themselves. Anything with a JIT (the more dynamic the worse) or with a garbage collector, unless the start conditions are exactly the same. Even if they are or even if your language is entirely deterministic (say it's compiled C), modern operating systems will switch the core away from the current thread to whatever else needs running, and that is not deterministic. And even if that is not the case, interrupts and varying times to handle them still aren't deterministic and effectively introduce some "jitter". And a modern general purpose CPU will have caches and instruction pipelines that add onto that.
If you wanted to benchmark something on a C64 in the 80s, you already better took the average of multiple runs. Try on anything modern that isn't a simple microcontroller, and you have to make a lot of runs just to "warm up" the system to fill its caches and so on. (There are "real time" operating systems, but those mostly just give upper bound guarantees, not full determinism.)
The question is how significant the differences are, and whether it makes sense given e.g. the system's time slices for threads.
If you change your program to calculate, say, 5 times as much, does the absolute jitter stay the same or does it seem to scale with the amount of calculation it has to perform?
The jitter seems to scale with the program.
I ran this program twice. It takes 5 hours on an emulator, so I didn't want to run it again (it is a quine of sorts btw):
Code:
EXPORT TfsUPs()
BEGIN
LOCAL T1:=TICKS;LOCAL T2:=0;
LOCAL k:="215832039762200385161480606882255176560335627223857548692409870320299226930625907853203460395064012928311659969035911784973539990311257074712923368287531231789205835996130237298147118225262010647426059454785235576471379999633800117254600048545432802342652150990668372002377942458627118093761901796496184369591828029522023704184522895231630005873782790021044668842203747258247203443073458609772628198273890816027699466337881432327067292933315026349166083528592126392194586910083878805979237518171422659043709872990868033290537631926110459449938101725214939044225827658717067300883498028341665023316731820723662946050088472469534651544709311280126128786018768121492986783700361588455325515251377625452512178661835749706726798412777644460361833437600916053031858331691579019408677203491078750377766385496283775717125066697458748558051152348136809546539089760686287900918158257459640284641750957954831492374807801690232811466715014899777596637057856445555074828701393333592840387962398506268295739804822281163111512754656426688788813141515128519451391396856902930649904047132294145917309865104983235477219267632631485173145070969379972015375279453583430696414368107380014428831765283359223803496175037367380554639809954631554122314383596722705341444551671195336591748082198456731451059119655132781829932815845364221117050215844862169920274470976293517367770799120116563425463614410897436349716991037847440326617884663645563142833099692435391900155881655124795964676125322283230994225540202092785405396627309008145422197420896311605506883407245583602207989887462066357546570276151660901305584359916120866416256091812795437299804623792264165107445761112722583480028236414706109228033191188143082318497812817017066230234067102376264071175714950719219662567510698069654429971526926190455782481324816254199216094805053086777852182234166281985859416362212519622799464532185874488412276242046256135022400298108988897003737522197590608159930596435895462222206459513792261052467535316878253707496260168965674407471594120908271988581738978223786047648196284787125494879506104925629816215772433714949662569327343726453143637623746218056900318422799639073513136165419130485441596456019297542775641121915293246771818656997069713879240547322711385681504036065009750230443181067462952716672075605672005545468408255329112702382629982383568904620668321864012899806837221289315841555693322135963985779092952571180100015918267863718500055099850023055506684681297812330366670527111540303724044788183554908254730364863250953649014296474222979796369078009127959366154558819043994161766019874166058663072009296856648124386272571741602060402218431569498702084649749380420026797143247996643316726710388584626277002997404726865825329156163804179713663839579594662948882693842036906577728486690507618462705702685998612267857369969832338015026250503540161801043238225738493486669369570372118928953686069514913736572752092655635846841823914920116973000386064409274714639726961484601329911347959477833858657104639124555641529546322856000628808289648588164177959008989358856334895026879419483324928188905077345971600832431308562758375152352939216199140752094310688093633059850050556635213838651132953374114356055546371667271703782772924757025038973836621242557030194792113869219313416639299243995579847802864571199667339532002816876308176908260182060080734316145900574651910369779099999714834898102167492247041204955405014756820466952561226900556309575421096142922990349742712567479747783460438316939094245351065458636497412239750077636385888716286463494988347860467483211158414568734014540238283340501790356220216409140330205493940485728797393923843722788076503117454171936011994523856066298456918796720924662263562882315400574855611852330991924007070353766068533840812000576191329656167114982619555125962820745688169330169881164420067494430007993166914227572084879099715999910594497875024406274489164476005588221914963912193517853510067824509090016812213859104296638132008694136543214406065272770683979559757543107932803749197918040174914931830430544170369257991358188985886062467128141550205536002529087746445851904590386769623671990448008990968392451375495347202479363991980567727472194458898489083283355252231387056631124541123285817849721413429227714757414914067109890244581591863049936573838588832521660864544178315866738605216120699085970467364434815077574817281289061116758456277836882443612176365090354804239231418980323515546375679374198449665466698835504403106422860248331254593641281472798182019708616170372879565413004811048386529386799735374894900650058625616673016523253479491582200777618010193796070749232379776409245192071271106064492949410080259371346237783221746587221695567275227754696588270276890700845155929616036048801802509948472762295313447668504588183642771390796989088598612010079196424996133037293117910551622707060788760289460988563839039053460395468012251045463211349172877318373986972118824072583336633691626935030877237752438970281144023439157771317136448516718034557248788470512893949906724310444373755164208891851336162666827858647428074222734939629499346191738402562991240752638665225420948591063773784542763660011886319873596747594692267071141151412847107645689758084901871412477069904135099168817524931835476560507910264881410025071503987022976336660331532867326567331350863128838744407741540872880773615307112020734529638677171411982450287644837294574382568881150186183129534240575898353036294093842079198787355480200362899240561177185757463953690306322905591582056770244684688612829597218426530517385942261821774470542545134075855558832558357532584698662257517777124874881674542795938362557473731624316743870939714305224739679433894769534951477534618854065576503340401547372682263837818941633840668926339840741649143428056355796972455680443412135608095303123146680507287995394948462263336097411405537233175835664723651334346554498629979390063907390839991263684117521366991086513959122401329795028738159689603295902105032649719005856324100537650570507154795084902117551805964719648750715245389019848674005727338585417673051531197270955145863186622370216737882564528649688932483278978547385507728907239985370334053495322126669463759292963335853578799014049847081379603426185525766007100393857227032160903348712096967096239997226428856604578357078976823514509611954342934144950777790491603336795259710765759440637858049200915806447085376743451826958514573654737087341973827106584695616971734547375221063285161936988639857778375529512369886385933735252637121625372356897665626635194036538875100211096848011724430368517625099038275407043806115814137480322463195279708505399912626502728760178284846663449485270322631624608930616452719036228283534838535341012084060108303114365305062631786062855148062923093217474059555966527210552544245013104130480039829431690716178323651019826638267480840630893379341954210227754801210673791439172646855212970212492262701180936644934147027774370696235531244222700514456415991192430908743492250256894419338184922442666143881440600101879653047548643859212078352694173036896574694049149422041477868954146313601873399229802140444010626260824204737492781396247870226076777289832529547935256266539066312041857852794285650800824807502810377501226224170671392243716381689112768534221889723206356370181155707050946603786767529946002143769419666413152210190407410074849912863727561307286419625608935607252167251518016777081428789618905009386944265882840132865743228082692412485749780902355573292315130053448149703457356132207893612842646863229643713182163097952677491627256952762332980419181521241342150713444554237124027460339433227569127847680249410648372745533826347375718870777774528822685723505960095020627369978439879268137727805711921363463943395939946125732820447909969149823504582700091393230941400048678933316165383150369692859789749887036697364429407102805673711894638949904115528786424776560854623077118482825195123647628201322859771742904744796889808768611669078755812908278804330536582470936068071147656081130361747992295864566212428718673221752663723073077032793084923490064287271238914020830503821128755869714648364617242632594232412348487755556807567128602604350643592613061080535445257489026191670619857047930313200649707932241130074951866206475651800883722814279334431576026227091301203459317443030650028149500229344873730601032306014603056460402818895065360052721708431753152966460327559169698155415836488379887237964004229243597343517723274277615851283909341575098237655060948097654039750660633620738970448225356068305693879657601222962208412965865269916492946717637374506951988531299201157236628940271473459204958711900620104186303054629487309663793954184042885202614656690299565099839439521682182392067063052944030252536106041228670952740836846752212276671526078734494390457143616780375458541632979887552790566870938992968933930422113246118586969289278430009346705648824242739120350869366805773431277779907169040802300833467325044028096884431856954473445720678739310457514233303346966659229753009511304957508721678330159824076018509075487761724672133428365246909458064614757212028154037129327450182171535061517639352931132418872672200706332900006555654576718242489091797248851847268275620026652135965823310089592326007428441253490569982624081224329096896345472049748075973478097729902040917661508737601350356116915614480343974731097304414553071729822179134661313927561919848280332820448752946013934449380649587110840511543022271964685615581103470125412730912568727707778916992634438158877640620637256415969474781979929235865421048654658574034969425965566745898426188460474167645552742182637956586946124804143372050615353813933258504746164128630798957171584375464664837794875731669244930171640016113593810780249592596508805376259274252036863907806389341833211148581519642609181099010755332773879771376994255743379168768008937070175862239101134546314354435662976628393221743509401675887176345395557077582372856162043616731669203167504909645234185004070669836152868440873366966718377123305474086346788151702179520745323423100558880933235274547472137094696903598640245145408452548470946159593647199540332890635402680995168986047517620252202335212424497460235804774644506076489827277079561276697102849396914120458306016363168101717191820330661383343681200946961156063591781447446523912664356037703862903988012825454755369260997925116808843266167848753979696676110628698980231874946829953330966232125234221789609032089459700196756398010742608368964830762550670202564313359285596854817121748198096129300945930535548336638749787792703514569673020905029921709228062292365405506267143864763388922122356269201244163034820278823895036635039026560163410371356634866582383566116596425586878074938019102718552462737658823976876448003303763433220219022436857778226384109160620827163445112829233339664115673145781604047943502042963115382015301752907878119094909832950724384336641579633532832779076271951986292309951284235914953007862736000164871312665913565990909878572778809020577809755156920332864951320031720425961677256664339682986952427578047518403998769099186312759847784786084943838214750435493307915507148294955202348213243180019514885910331707129805091623328920305303717951462270522781977876691274600816919071493952316094837955733530643814215356592200511119632262081053510423710350405744966357549808485069212522410135526648328266372181522201185973047068596672508785702195735975503781446814725358202456252992487763902933771476739715882948796232346705847073584588277995469901850568215568422407679052644516941195067954988235203258771185806502445164841628438759985019738881245331908367209882045824797043052441420638346455337206964274433042677407698171736381844716713898406895452613370639390419306230616065386230319489146353781242912982379412454613548100973775862659556081520772942485409596421285942918290410662188138692285794422192182349100854812648082942956700061985246845642701435253258096352204351281495014582421130259252792216720135330758073583663479439507312748710534534775473495750917073843026488654003413652104186462061773421768419452528643664700485745915395679321444480901919944686071559340403121546083157827241056258213797417760629476651413990656017048271721113693728000795075387515803011483126022278979410641403488410856470717302183954381399911028471649778816695688511875579168858073324194373374533867109130944797853665972572284764554328982717842687684210583755843059980065701550970425906760362658427659555810698716036120146285744507844696929059766799403064379276722975221416954601509406623677051488861004620488119865759969689327026069667357684051249400483791504342031706372898768816620925511568860719864981359245852329479730238323764886569161033222719480457991282623133985277028630181741913514464460109516424391760421293615773849131010307148008722048599642124805888772678303721900667410539905606558070135140647655187780789143692234430299611509098340298539717177804294950766881511041689841809446984708770799353578812493627694686324072562028464829333177697766492041747067182254797578453353675657111035998378162861076368563418270709002680316701545599457024922400714374144260154470394278222683586731239852539523830256418299870936472215434516637653491082130649892546820060050155968173927910627808984128183183098232833869641682420486244574566569368266195454005396802492917183990262329422345328692109090288888690729125743793696885524742641484566316717663729244229487409711136182860339851867181238739366682344712741740328328755348920220322397175273561373802619776984682689593424985108913930554410548080831114433442948547220092466442170789661863562171225521113612458875512091708340397173097733118113304732972822375312470662033703499775963350900747153500548131714633721187621743550736442783873731266582992450279335191000958076829985182215841800769177652179675970225767311999422739502733257731491981198878890346300047721600794603005593860182824642319749778419333020007959512857712284180057697118272994671012949597615417895581466841980325565792566416093098388099073016499440615664095047753775890132928914953199031258689627132549342824884762363017029370319914246803219690279216732722862100809508159759464575559298679637638319607167026882892468123975186003774911267290608858643096421261986810369508567215981092305755034271287485197799329135705457110170994133302188060584241869383961083099551872081815036828570800227864055877331486680425885518848445219223557296836621885583706062552418687365759180592257340735392520313818339102505052444383517924404412534717220968206887245575339998339835747884196157416106589381806876397684586069082904434958107793126064457733853174030881777901118837007447584733112891051867827701656494679759052882392955315262076816173226347728136687666914803432580961726185747549724577909175156766236939213737857584573598256023987211440644018826176606945463491518472604327868598589630709931049870195909334331782819507130796776674312951603176119437453194816803243398143353642611537994597165334549812297980534448272138193099410154340664757004623317610556703724811750144213357583975331238454228222148940071934911289783403658529823228945292513435748949520257786715020903233280782307073685402089292470155312923522974292926468644900563720022417994434334890276496598186521265218952318267032533185517282882556536875463765377472164749386985955152043216179021979280445127417648227882296410352003536628117845256055865957037705538671426046796059501437592520733043401050895052621929844836876259896515857716974468156344426782446889420349797448574263312245404753670749052808534462763433041767433655149270615285797843208796518225891361275779910286302528977251923431736855315967808855037532126025661241415662683061170072068920362014619797162234601331972550816819051725807656170479319748225717355949876595498661107151579732019623866793503141595805234403041893481739220013221685296817979821637233318180605563239342245783324337367391155376917348914920041073128456544990131560120285796196732947014294447472056642226256141333390040378446204813659909709119701170782752494490396829152661033446149095473363892203754195090929973304695206537272982793394399122307732854503705152951382079955751388192880981972675093818879181805034339884788446728343706031244356569836677674373685478310447286188391001861209229183557238762348134889151852542902812798416674360213338530009086166421341715384030035735550317814923338009248111395841543370223747012494680752517259320717647613603244010007336422153752365120636419099684982559598922914366732849698474825741406756790448214627878485141606676248175145512443350585395300192960538467186592079709783911570853883330428431501251180426695901079859460626121827714262405923289037686352051837876759997141640920511497099159995010922438211829440089783686112808911062951189632965661379001635973136380641350883611368782726859573431216545142715500016856443281933661425752357786888490666095747901574079566692877710576689602429337169355925162204418203069020740051077356793419019387506476511330705426292254248758412022795411046340662853690756941870994433460057485770650031905172987848314607522899648254326754411202885923267990910023525466452920806034930153165463351921313792865507525345497085052245408935330005859459066968684785472444932530062505899765382205041102101144536987345580097614409999343245369313856020952432802606281957904034341474571174146042539195978209228732224536303843772516463967109317487995192102509146379093976076364774213475696008278259834217135714147189951368579028438406336959859646538602799667309142474404416145164344912841701709729325375446958687531812674717342496999766560832186918494415578798359210323680173771022562468918527917898822734518579272700907377914942752487541211969017917027531188521105852670728869641557476895252480176671368358327139309063144259112595576134798550212597612168878938972218438354529449215298882312577952575766749670907254386787556167155428611575218987988514822229503889656530032063101314193670268313401015267616913585971781820236046685374053408288342640351001021437535200458276486296813190192812238244195004340737127652358079461805038190755678147169349846790343644627282185627172172462131111762501986397379627231886473410363556048479688207001025383268348228865316153009468845324740830950826618970989464985890619959676575924764896478118605393329626284268536612361670405280931156977825188062015120602819059038378866714603642952624868496162740569343588850701020789056268320200832602080581441141640121840671922161306983698299224090427651200813150943866952235220026636958442086939464310085016783163266761130521815480069490471175744892201662808729148057362561981455811121395942544368644327616557440652077102602016491944369155311020149059657475461981824233403389222597690126993443097735893629507382323532337945001273157263084742117757566270971636610864666380616307421643912325779144207270194525729268974042083162370784322218759546151786626280551536309738043347966735125243011796975049982100515772259040810188410586892834125179252179580446080550232254395039315854856967703869358462698528381119901816434535522307160049324147301190592402195798449380518453550393803219349989208354727226937582228316679265149666152032616213686602767070094064881371623432536994836043093087741551518626876861078569486042895768982928931339383497509795526366599920084621688147856747182556296540411417622087012120327838256535490213059346048113010804458756342596805531747339891537283752616200595601208013707541161877589144897610775396517002619342396790534612743409773534990643995002850420865480565983504738988554643820455050202779459239922859319683313496546912320472195669187429694918704733898704008678007354632666033713944754760957492536802963619783435878447904093076564945300261150770953468494389377524997144526721112860112166180346312258682360917063410948246477260865485201498773889748265804175308893006668795562002165353826954662922408403325286884908426183086377509972568382073219593787181890195619463555501202343289261558256731302513360737235323594056645041672500528411542918974499067172964048810057590336008970815423018773617723592351882808288422427847984658758355379992698779765441209774605329950729504552228606319013430903903225875049853891754092790862358197981852182279590354709165724977346914568653803720398469052820816263400169764699746807736519874989638742582209581636775866232730120512815179238551223089975351351664554893530759584658373090717561831331370784949769623381000688117148165892317678787874036051615376124583488775792859481782660521437768775712539351231735070707691315857968189743507424450326450198591725034048401264533391439946090787640241016141514248196526260063869304719375900862633015642326415467916648896989879429288312621137073134637759177896996260308809410144109161259461327225650742668875165742485148878184753761652634410481416191825618828798127688093250425702399619228053226880651643024542894652457316726234117207411989057717079873875823234202611494406599115684695014424752705867560163394777508897777579539379268266153148977159104888787508279343464773106196547617924491925311627473680125730298479412212853800890598409093773492505156945342407181376738032668835278758639927145371226401828852741512095969298521077220134543826739097998570698138290576253542283312622814612137700608641500314897090572414606576383925633641863237941756749167289541338819698501898706754807495640728734868100848300470972377706175087137476127200616933298576526513493099196309058322463557893091627997484049514522793292904010203905630624421777293185736975333418296943704324396170327110565414137702929562459054617054320922566486262149022083049753772610123320680032897360870608560528460195154781830006213908090826210611635496682701362574108572838139261445767562440378763688698115141953451068012983666330137755353770423375656772964190333385672017132399029160758023787014684799904788515197695653903655195086053181814715153585333936968384384866874946836422154879343593640916164903343469361962442922128369953710929508477686255695753022307125464719253559055044693409214033314819537111218085874907640418456351922675636577351753581866013634286608248287361221396679363521640322393275893687615303757603520025311083109351911936106181810798924726836818356582011893087781046383257062986112365762084775108100118144986747026781292106848559502258263643635729725762652396456109502272722918053382928659452298659948512709010773955593988937253877998471273972371055963527090207215768763368758325811102084916298985021050513422814452413024595072581967734724855242584820796844089198247005912731039444191817436122075479526817891506637877942041967134086047770501644270539720724566722428438194478492275420333693841790472001147377771733201083381402097250046809185708233982161959451227579833283420829131623208931475467415361700496961459493285505307017599033281900387669229633521504914955306319366628800721813675583323078522763002346449411642408806084291613364405339360348158221655213993278946090510121212693196273406936917508079016471905768809304264260708895800063684915358888157961931109137183496954865021021641976491993451642285218755593148934184443548397877689568396704573808954805306209023610282910847873187694952634638638436123648651484542607738785499898341056408372259519230206322281198410426944430891727222664945007798611204020783930032467058925892385342335044453197784898590856626307055";
// Divide long number by 17 and store by using
LOCAL A:=0;LOCAL B:=lsd(k);LOCAL C:=0;LOCAL D:=0;LOCAL E:=0;LOCAL B1:=B;LOCAL B2:="";LOCAL B3:=B;LOCAL NA:="";LOCAL DONE:=0;LOCAL CO:=0;
rect();
REPEAT
B3:=B1;
REPEAT
// Take long integer and turn it into binary digit by digit.
IF B1(1,1)=="0" THEN
IF length(B1)==1 THEN
DONE:=1;
END;
B1:=RIGHT(B1,length(B1)-1);
END;
UNTIL B1(1,1)≠"0" OR DONE==1;
NA:=0;
FOR P FROM 1 TO length(B1) DO
C:=EXPR(B1(P,1));
A:=NA;
IF C MOD 2 THEN
NA:=5 ELSE
NA:=0;
END;
D:=FLOOR(C/2);
E:=D+A;
B1(P):=STRING(E);
END;
// Plot each pixel as it is met.
IF EXPR(B3(length(B3),1)) MOD 2 THEN
PIXON_P(FLOOR(CO/240),(CO MOD 240),0);
END;
CO:=CO+1;
UNTIL DONE==1;
T2:=TICKS;
PRINT(T2-T1);
WAIT(−1);
REPEAT
WAIT(-1);
UNTIL ISKEYDOWN(4);
END;
lsd(number)
// LongStringDivision will Divide a long string integer of ANY length by a
// Number that the calcualator can handle, integer result only.
BEGIN
LOCAL divisor:=17;
LOCAL ans:="";
LOCAL idx:=1;
LOCAL temp:=1;
temp:=number(idx)-48;
WHILE temp<divisor DO
temp:=temp*10+(number(idx+1)-48);
idx:=idx+1;
END;
idx:=idx+1;
WHILE size(number)>idx-1 DO
ans:=ans+STRING(FLOOR(temp/divisor));
temp:=(temp MOD divisor)*10+(number(idx)-48);
idx:=idx+1;
END;
idx:=idx+1;
ans:=ans+STRING(FLOOR(temp/divisor));
IF size(ans)==0 THEN
RETURN 0;
ELSE
RETURN ans;
END;
END;
And it took, 1st try: 19,391,369 ticks then 2nd try: 19,530,835.