UsingAutomaticMemoizationasa SoftwareEngineeringToolin
|
|
|
- Johnathan Cole
- 9 years ago
- Views:
Transcription
1 UsingAutomaticMemoizationasa SoftwareEngineeringToolin ComputerScienceDepartment JamesMayeld Real-WorldAISystems UniversityofMarylandBaltimoreCounty Baltimore,MD MartyHall ScienceApplicationsInternationalCorp. 9841BrokenLandParkway,Suite118 Columbia,MD21046 UniversityofMarylandBaltimoreCounty ComputerScienceDepartment TimFinin Baltimore,MD April1994 detailedtreatment.thispaperdescribeshowautomaticmemoizationcanbemadeviableonalargescale. automationofmemoizationasapracticalsoftwareengineeringtoolforaisystemshasneverreceiveda cussedsincethesixtiesandareoftenusedasexamplesinintroductoryprogrammingtexts.however,the MemofunctionsandmemoizationarewellknownconceptsinAIprogramming.Theyhavebeendis- Abstract Itpointsoutadvantagesandusesofautomaticmemoizationnotpreviouslydescribed,describesthecom- 1
2 Track:EnablingTechnology. apubliclyavailablememoizationpackage(clamp)forthelispprogramminglanguage.experiencein applyingthesetechniquesinthedevelopmentofalargeplanningsystemarebrieydiscussed. ponentsofanautomaticmemoizationfacility,enumeratespotentialmemoizationfailures,andpresents Words:5869. Correspondence.Pleaseaddressallcorrespondenceto:JamesMayeld,ComputerScienceDepartment, Subtrack:SoftwareEngineering. UniversityofMarylandBaltimoreCounty,Baltimore,MD Voice: Fax:
3 theautomationofmemoizationasapracticalsoftwareengineeringtoolforaisystemshasneverreceived 1Introduction adetailedtreatment.thispaperdescribeshowautomaticmemoizationcanbemadeviableonalarge scale.itpointsoutadvantagesandusesofautomaticmemoizationnotpreviouslydescribed,itemizesthe MemofunctionsandmemoizationarewellknownconceptsinAIprogramming.Theyhavebeendiscussed componentsofanautomaticmemoizationfacility,enumeratespotentialmemoizationfailures,andpresents sincethesixtiesandareoftenusedasexamplesinintroductoryprogrammingtexts[16,13,14].however, thelisp1programminglanguage.wewillalsobrieydiscussourexperienceinapplyingthesetechniquesin apubliclyavailablememoizationpackage(clamp CommonLispAutomaticMemoizationPackage)for thedevelopmentofthesignaturemanagementsystem(sms)[18],adecisionsupportsystemthatprovides Itreferstothetabulationoftheresultsofasetofcalculationstoavoidrepeatingthosecalculations.Automaticmemoizationreferstoamethodbywhichanordinaryfunctioncanbechangedmechanicallyintoone thatmemoizesorcachesitsresults.weplacethedecisionaboutwhichfunctionstomemoizeinthehands oftheuser;thiscontrastswiththeapproachofmostowandcohen[11],whichtriestoautomaticallyinfer Theterm\memoization"isderivedfromtheterm\memofunction,"whichwascoinedbyDavidMichie[10]. submarinecrewswithsituationalawarenessandoperationaladviceinordertoreducedetectability. althoughasmostowandcohenpointout,thelatterapproachisnotapracticaltool. whichfunctionsshouldbememoized.thesetwoapproachestoautomaticmemoizationarenotincompatible, ofmostaisystems. theoutset,automaticmemoizationfacilitatesthekindofexploratoryprogrammingusedinthedevelopment beingassuredofreasonableperformance.byallowingtheprogrammertoavoidetheseeciencyconcernsat Automaticmemoizationallowstheprogrammertowritecertainfunctionswithoutregardtoeciency,while MemoizationisparticularlyaptforAIapplications.RapidprototypingisahallmarkofAIprogramming. functionalprogramming[5],andnaturallanguageparsing[12]havebeendescribedintheliterature.in allofthecasesthatwehavereviewed,theuseofmemoizationwaseitherbuiltintoinaspecialpurpose 1Throughoutthispaper,weusethenameLisptorefertothelanguageCommonLisp,asdescribedinSteele[15]. Theprincipleofmemoizationandexamplesofitsuseinareasasvariedaslogicprogramming[17,7,3], 3
4 computingengine(e.g.,forrule{baseddeduction,orcfgparsing),ortreatedinacursorywayasanexample softwareengineeringtechniqueunderhumancontrolhasneverreceivedadetailedtreatment.inthispaper, wereportonourexperienceindevelopingclamp,apracticalautomaticmemoizationpackageforcommon ratherthantakenseriouslyasapracticaltechnique.theautomationoffunctionmemoizationasapractical Lisp,anditsuseinalarge{scaleAIproject. Figure1.Thisalgorithmisusedtodeterminecoecientsofinterpolatedpolynomials.Thealgorithm,which isastandardoneinnumericalmethods,istakendirectlyfromnumericalmathematicsandcomputing[1]. Bymeansofillustration,considerthedivided{dierencealgorithmdd,whichisshowninpseudo{codein andhigh=10andanotherrecursivecallwithlow=1andhigh=9;eachofthesewillinturnmakearecursive computation.forexample,acalltoddwithlow=1andhigh=10willgenerateonerecursivecallwithlow=2 atree;thus,arecursivecalltoddwithparticularargumentsmayberepeatedmanytimesduringasingle ofinteresttoushere.thecalltreeforthedivideddierencealgorithmddformsanetworkratherthan Theapplicationitselfisnotparticularlyimportant;itistherun{timebehaviorofthealgorithmthatis thedivideddierencealgorithm,usingf(n)=cos(n)andtherstnnaturalnumbersasarguments.since callwithlow=2andhigh=9.memoizationofddcauseseachcalculationtobeperformedonlyonceand storedinatable;thereafter,eachrepeatedrecursivecallisreplacedbyatablelookupoftheappropriate value. ofpointsiscalculatedmorethanonce,andthereare(n2+n)=2subsequences.subsequentinvocationstake (2n)timecomplexity.Aftermemoization,therstinvocationrequires(n2)time,sincenosubsequence asinglefunctioncallonnpointsgeneratestworecursivecallsonn?1points,theunmemoizedversionhas Figure2comparestheperformanceofmemoizedandunmemoizedversionsofaLispimplementationof near{constanttime. istouseanautomaticmemoizationpackagetoconverttheelegantbutinecientrecursivealgorithmintoa recursivedenitionswhicharesimplyunusableformostrealproblems.theconventionalresponsetothis situationistomanuallyrewritethealgorithminadynamicprogrammingstyle.ofcourse,suchmanual rewritingofthecodetakeseortandinvolvestheriskofintroducingnewbugs.anattractivealternative Thisalgorithmfordivideddierenceistypicalofalargeclassofalgorithmswhichhaveveryelegant 4
5 ;divided-differencealgorithm dd(points:array, begin iflow=highthen low:array-index, high:array-index, fn:function) end elsereturn(dd(points,low+1,high,fn)- returnfn(points[low]) (points[high]-points[low]) dd(points,low,high-1,fn))/ Figure1:Thedivideddierencealgorithmfordeterminingcoecientsofinterpolatedpolynomialscanbe elegantlywrittenusingrecursionandmadeecientthroughtheuseofautomaticmemoization nunmemoizedmemoizedmemoized (rstrun)(subsequentruns) Centuries isreducedfrom(2n)to(n2)forinitialrunsandtonear{constanttimeonsubsequentones. Figure2:ThistableshowsthebenetsofmemoizationonaLispimplementationofdd.Thetimecomplexity
6 rewritingcodebyhand.sectionfourdescribesthegeneralcomponentsthatshouldbepresentinany describedintheliterature.sectionthreecomparestheuseofautomaticmemoizationtothealternativeof realapplication. usefulone.thisisattractive,ofcourse,onlyifsuchapackagecanaddressthepracticalproblemsfacedin variouswaystoaddressthem.sectionsixdescribesourexperienceinusingautomaticmemoizationinin automaticmemoizationfacility.sectionvepresentsproblemsinherentintheuseofmemoizationandthe Inthenextsectionwedescribethesomeoftheaspectsandusesofautomaticmemoizationnotpreviously Therearefourmainusesofautomaticmemoization.Twooftheseinvolvetheavoidanceofredundant 2UsesofMemoization thedevelopmentofsms alargedecisionsupportsystem. calculation,rst,withinasinglefunctioninvocation,andsecond,acrossinvocations.thethirduseof arenotconjecturedusesbutoneswhichwefoundtobeeectiveinmanysituationsinalarge,real{world AIapplication.Wediscusseachoftheseusesinmoredetailinthefollowingsubsections. 2.1RepetitionwithinaFunctionCall automaticmemoizationisasapre{calculationtool,whilethefourthisasatimingandprolingtool.these call.inthedivideddierenceexamplepresentedabove,thereweremanyrepeatedrecursivecallswithina Themostcommonuseofmemoizationistoavoidtherepetitionofsub{calculationswithinasinglefunction singlefunctioninvocation.thistypeofrepetitioniscommon.forexample,asimplerecursivebacktracking thathasthesamebehaviorasadynamicprogrammingalgorithm;ratherthandeterminingtheproper parsermayparsethesameconstituentmanytimesduringasingleparse;thusitsperformanceispoor. orderinwhichtoconstructsubpieces,memoizationofasimplesolutioncantypicallyachievethesame algorithm[4]throughtheapplicationofmemoization. Norvig[12]hasshownthatsuchanalgorithmcanobtaintheperformanceofchartparsing[8]orofEarley's performance[2].again,throughautomaticmemoizationonecan,inmanycases,achievethebenetsofa Thus,wecanviewmemoizationasatechniquetoautomaticallyconvertarecursivealgorithmintoone 6
7 Inateamprogrammingenvironmentdierentsectionsofasystem,writtenbydierentprogrammers,may 2.2RepetitionoverTime toholdtheintermediateresults. dynamicprogrammingapproachwithoutrewritingthecontrolstructureorintroducingnewdatastructures timesthatmakeuseofsomethesamepieces.inthesecases,thereisnocentralroutinewhichcouldmanage accessthesamefunction.alternatively,inaninteractivesystemtheusermayinvokecalculationsatdierent insuchcasesistohavetheroutineinquestionmanageitsowndatastructurestocachepreviousresults. thecallingsequencetoavoidrepetitionofthecalculations.theonlyalternativetoautomaticmemoization Theprecedingsubsectionsshowedthatmemoizationcaneliminatetherepeatedinvocationofexpensive 2.3Persistence calculations.thesetwoapplicationsofmemoizationareusefulwhenitisfeasibletoperformtherst invocationofafunctionatrun{time.memoizationisalsousefulwheneventherstinvocationistoo expensivetoperformatrun{time. purposedatale,andstoringinittheresultsofano{lineexecutionoftheexpensiveroutine.then, thefunctioninquestionismodiedtoaccessthatle.automaticmemoizationprovidesamethodto memoizationeliminatestheneedfortheprogrammertoknowwhichrangesofvaluesarestoredinthedata pre{calculateafunctionwithouttheoverheadofahand{craftedsolution.insuchsituationsautomatic Useoffunctionsthataretooexpensivetocalculateatrun{timeisusuallydonebybuildingaspecial andthenruno{lineonthecasesofinterest.thecontentsofthehashtablearethensavedtodisk.the le,andwhichmustbecalculated.toachievepersistenceofanexpensivefunction,thefunctionismemoized functionaredeterminedautomatically.thatis,theprogrammerdoesnothavetospecifytherangeof allpossibleinputstothememoizedfunctionarepre{calculated.second,theinputvaluestothememoized savedleislaterusedtoseedthehashtableforthefunctionwhenitisreloaded. calculateafunction.first,itallowstheeliminationoffunctionsfromtherun{timesystemincaseswhere Therearetwoadditionaladvantagesofthistypeofmemoizationbeyondprovidingtheabilitytopre{ 7
8 possibleinputstothememoizedfunction.infact,thissolutionworkseveniftheprogrammerhasnoidea whichinputvalueswillbeused. 2.4TimingandProling systemsprovideaprolingfacilitywherebytheusercanseethetimethatatop{levelfunctionspendsin cantakethirtytimeslongerthananunmeteredrun.thisdoesnotincludethetimerequiredtoload Finally,automaticmemoizationcanalsousedasaprolingandtimingtool.Manyprogramminglanguage variouslower{levelroutines.thisisimportantfordirectingoptimizationeorts.however,theseprolers generallyrequiresignicantoverhead.forexample,afully{meteredlisprunonasymbolicslispmachine themeteringsystem.theexpenseofmeteringisworththeeortforimportantcases,andisavaluable softwareengineeringtool.insmallercases,however,automaticmemoizationprovidesaquickbutrough methodfordeterminingwhichroutinestooptimize.ratherthanrunningthefullymeteredsystem,users interactivelymemoizecertainfunctions,thenrepeattheoriginaltestcasetwice.ifthetimingforthesecond caseimprovesonlyby,forexample,vepercent,thenforthattestcase,noamountofoptimizationinthe routinesinquestionwillprovidemorethanavepercentspeedup.ifontheotherhandagreatspeedupis seen,thenthememoizedfunctionsaregoodcandidatesforoptimization. memoization,dynamicprogramming,anddevelopmentofanewalgorithm.first,memoizationneednotbe automated.memoizingaroutinebyhandcouldconceivablyresultinminoreciencygainsoverautomated Therearethreealternativestoautomaticmemoizationforeliminatingrepeatedcalculation:hand{crafted 3AlternativestoAutomaticMemoization memoization.second,insomecasesanorderingcanbefoundforthecalculationstobeperformedsuch ofcomputerprogramming[9],knuthpresentsastraightforwardmethodforcalculatingdivideddierences intheproperordertogetthesameperformanceastherstinvocationofthememoizedversionpresented intheintroduction.finally,anewalgorithmforagiventaskcanbesoughtthatdoesnotrequirerepeated calculations. thatfullmemoizationisnotneeded.forexample,involume2(seminumericalalgorithms)ofhistheart 8
9 memoizationovertheotherapproachesdescribedabove.theyfallintothreecategories:qualityofsolution, themajorbenetofthedevelopmentofanewalgorithmisasavingsinrepeatedcalculations,automatic easeofuse,andadditionalusesofmemoization. memoizationofanexistingalgorithmhasseveraladvantages.theseadvantagesalsorecommendautomatic Automaticmemoizationisnotasubstituteforndingtheproperalgorithmforatask.However,when 3.1Qualityofsolution does.thislastpointisespeciallyimportantinthedevelopmentoflarge,complexsystemwherethereis notrisktheintroductionofbugsintothefunctiontothesamedegreethatdevelopingnewcodeforthetask functiontobememoizedhasalreadybeenwrittenanddebugged,theuseofautomaticmemoizationdoes eciencyimprovementdoesnotappearinthebodyofthefunctionbeingimproved.furthermore,ifthe Automaticmemoizationusuallyleadstoshort,clearimplementations,becausethecodetoimplementthe anaturalreluctancetochangeroutinesthathavealreadybeentestedandveried,especiallyifthatwill requirechangesinmultipleplacesinthecode.furthermore,becauseitissimpletoswitchbackandforth Inmostlanguagesautomaticmemoizationcanbeimplementedsothatitissimpletomemoizeandunmemoize 3.2Easeofuse functions.noneofthealternativestoautomaticmemoizationcanboastsuchalightloadontheprogrammer. betweenthememoizedandunmemoizedversions,itiseasytocomparetheperformancesofthetwoversions. thedesignofsuchapplicationstendstochangerapidlyandfrequently. maintainingnewcode.thiseaseofuseisespeciallyimportantinarticialintelligenceapplications,because 3.3Additionaluses Again,thiseaseofusedependsinpartonavoidingtherequirementofwriting,debuggingandeventually not,ingeneral,providetheotherbenetsofautomaticmemoization,i.e.persistenceofcachedvaluesand Whilethealternativestoautomaticmemoizationmentionedaboveeliminaterepeatedcalculations,theydo usefulnessasatimingandprolingtool.itwouldbepossible,ofcoursetobuildinsomeofthesefeatures 9
10 onlyonce inthegeneralmemoizationfacility. tothedevelopmentofthesmssystem. suchasapersistentcachemechanism.however,theautomaticmemoizationapproachrequiresustodothis buildingrealsystems.hallandmayeld[6]describesomeoftheseadvantagesinmoredetailastheyapplied Theresultofthesebenetsisthatautomaticmemoizationoerssignicantpracticaladvantagesin BasedonourexperienceindevelopingandusingCLAMP,wehaveidentiedcharacteristicsthatanyautomaticmemoizationfacilityshouldhave.Automatedmemoizationofsomesortcanbeimplementedin mostlanguages.languagesthatprovidetheuserwithaninteractiverun{timeenvironment(suchaslisp, DylanandML)musthaveeitherrun{timefunctionnameresolutionorapatchablecodesegmenttoallow automatedmemoization.languagesthatarestrictlycompiled(suchasmostimplementationsofc)must 4ComponentsofanAutomaticMemoizationFacility 4.1MemoizationControl beaugmentedwithsomesortofpreprocessortoallowautomatedmemoization. First,thesystemmustprovidetheuserwithavarietyofmethodstoeasilymemoizeandunmemoizefunctions. functions,cachecontrolfunctions,andstatisticsreportingfunctions.wewilldiscusseachinturn. Threetypesofcontrolfunctionsmakeupausefulmemoizationpackage:memoizationandunmemoization afunction,unmemoizeallfunctions),andalso,ifpossible,temporarymemoizationcommands(e.g.treat evaluatingaparticularexpression). afunctionasmemoizedwhileevaluatingaparticularexpression,treatafunctionasunmemoizedwhile Thesemethodsshouldallowbothabsolutecontrolovermemoization(e.g.memoizeafunction,unmemoize experimentationshowsnobenetsfromdoingso.2 hisorherprogram.itisnotalwaysobviouswhatimpactmemoizingafunctionwillhave.forexample,at rstglance,thehailstonefunctionshowninfigure3lookstobeagoodcandidateformemoization,but 2Ofcourse,somecarefulreasoningwillalsoleadaprogrammertothesameconclusion,butnotallprogrammerswillhave Itisimportanttoallowtheprogrammertoexperimentwiththeeectsofmemoizationinthecontextof 10
11 (defunhailstone(n) (+1(cond((=n1)0) ((evenpn)(hailstone(/n2))) 4.2CacheControl Figure3:TheHailstonefunctionappearstobeagoodcandidateformemoization,butitisnot. (t(hailstone(+1(*3n))))))) Second,thesystemmustprovidemethodstocontrolindividualmemoizationcaches,bothforasinglesession andacrosssessions.mostimportantistheabilitytoexplicitlyclearacache,therebyforcingallfunction savedtodisk,andinalatersession,toinstructthatsuchasavedcachebereadfromdisk.easeofuse returnvaluestobere{calculated.persistenceisprovidedbyallowingtheusertoinstructthatacachebe concernsdictatethatthesemethodsbeactivatedbyreferringtothenameofthememoizedfunction,and nottothenameofadiskleortosomeotherinternaldatastructure. thenumberoftimesthatsuchinvocationsresultinthereturnofacachedvalue.theusershouldalsobe functionisrunning.thesestatisticsshouldincludethenumberoftimesamemoizedfunctioniscalled,and 4.3DataControl allowedtoresetthesestatisticsinpreparationforanewrun. Finally,thememoizationpackageshouldprovideroutinesthatreportstatisticscollectedwhileamemoized 5MemoizationFailures thetimeandexperiencetodothistypeofanalysis. Amajoradvantageofautomaticmemoizationisitstransparency.However,anoverly{transparentviewcan (notablybymostowandcohen[11]),mosthavenot.instead,welearnedthemthehardwayinusingthe leadtoproblems.whilesomeaspectsofthesememoizationfailureshavebeendiscussedintheliterature 11
12 severalyearsindevelopingthesmssystem. useditisthattheuseofatechniquethatcannotguaranteecorrectresultsafteritsapplicationisoutof evolvingclampsystemthroughtheexperiencesofaiprogrammersusingthefacilityoverthecourseof thequestion.thiscomplaintisunfounded.asacounterexample,atechniquethatiswidely{usedbyc programmersisfunctionin{liningthroughmacroexpansion.suchmacroexpansionisnotguaranteedto producethecorrectresultsinallcases.however,becausetheprogrammercontrolswhenmacrosareapplied, Themostcommoncriticismofautomaticmemoizationthatwehearfromprogrammerswhohavenot 5.1CacheConsistency thetechniquecanbeusedprotably.itisforthisreasonthatweadvocateprogrammercontroloverthe Memoizationisusedtoavoidrecalculationwhenafunctionisinvokedwithargumentsithasseenpreviously.Directchangestothefunctionshouldresultinthememoizationcachebeingushedautomatically,as ofallfunctionsinitscalltree,andrequirethatthecachebeushedwhenanyofthoseentriesismodied. Thiscouldnotbedoneautomaticallyatrun{timewithouttheuseofspecialdatastructuresintheunmemoizedfunctions;thiscapabilityisunlikelytobeadoptedinmostprograms.Inmanycases,aproperuseof todetectisthealterationofoneormoreofthesub{functionsthatthememoizedfunctioncalls.thereare severalwaystoalleviatethisproblem.thebestmethodwouldbeforeachmemoizedfunctiontokeepalist haveencounteredinmakingdecisionsaboutwhichfunctionstomemoize. selectionoffunctionsformemoization.inthefollowingsubsections,wedescribethepotentialpitfallswe presumablyitwillthencontainincorrectvalues.thissituationisrelativelyeasytodetect.moredicult goalwillbecompromised. fortheprogrammertoadopt.ifusingmemoizationrequiresinvasivechangestounmemoizedroutines,this Thisisatrade{o.Oneofthegoalsofanautomaticmemoizationfacilityistoprovidetoolsthatareeasy thecurrentlymemoizedfunctions,awarningtocheckthelistwheneverchangesaremadeisoftensucient. modularitywillindicatehowfarchangesarelikelytopropagate.sincetheuseralwayshasaccesstoalistof Run{timechangestofunctionsusuallyoccurduringdevelopment.Ifcachesarenotsavedtodisk,the Howeverthisproblemisaddressedwithinasinglesession,itisusuallynotaproblemacrosssessions. 12
13 memoizedroutineswillonceagaincalculatecorrectvaluesthenexttimethesystemisloaded. nodierentfromnormaldatales,andthesameproblemsofoutdatedversionsapply.nofullyautomated solutionwillguaranteeconsistency,shortofasystembuilderthatforcesrecalculationofallsavedvalues whenevertherearechangesinanycodeonwhichthefunctiondepends.thisisnotanunreasonableoption duringdevelopment,sincethememoizationfacilitymakesiteasytosaveentries.o{linecalculationscan Cachesthataresavedtodiskpresentamuchmoreseriousproblem.Insomesenses,suchcachesare beperformedatregularintervals.however,thereisstillanincentivetolimitthesecalculations,sincetheir recalculatememoizedvalues.first,theprogrammerspeciesapercentageoftheentriesthataretobe theoriginalfunctioneventhoughitsargumentshavebeenseenbefore.ineachcase,theserecalculatedvalues recalculatedonloadingthehashtable,and/orapercentageoftimeswherethememoizedfunctionwillinvoke time{consumingnatureiswhatledtosavingthetablestodiskintherstplace. arecomparedtotheoriginalones;awarningisgiveniftheresultsarenotidentical.load{timerecalculation Onewaytolimitthelikelihoodofinadvertentuseofobsoletevaluessemi{automaticallyistoperiodically maynotbepossible,ofcourse,sincealltheroutinesneededforacalculationmaynotbeavailablewhenthe specication,ifthesystemiscountingonagivenlevelofperformance.evenifbothtechniquesareused, theydonotguaranteethatallobsoletevalueswillbefound.thus,thesetechniquesshouldbeusedasa thanasareplacementforthem. functionisdened.similarly,run{timerecalculationmaynotbedesirable,evenwithaverylowpercentage 5.2Non-Functions Memoizationonlyworksfortruefunctions,notprocedures.Thatis,ifafunction'sresultisnotcompletely complementtoothersoftwareengineeringtechniques(suchasexplicitmaintenanceofdependencies),rather programmingstylethroughoutthesystem. numberoffunctionsthatcanbememoizedsuccessfullywillbeincreasedbyencouragingtheuseofafunctional anddeterministicallyspeciedbyitsinputparameters,usingmemoizationwillgiveincorrectresults.the 13
14 5.3ModicationofResults whenrstwritten,butwillmakesubsequentmodicationsdicult.however,insomecasestheycanleadto iscalled.thus,memoizedfunctionscanreturnresultsthatsharestructures,eveniftheunmemoizedversion Inherentintheideaofmemoizationisthatdataisstored,ratherthancalculatedaneweachtimeafunction alwayscreatesnewstructures.evenwithoutmemoization,operationsthatmodifyfunctionresultsare eciencygains;withcare,programmerscanusethemtospeedupthefunctionsthatcanreallybenetfrom theiruse.unfortunately,thetransparentviewofmemoizationbreaksdownwhenusedwithsuchroutines. dangerousfromasoftwareengineeringperspective.acommonproblemisthatsuchroutineswillworkne functionnormalized-data,whichdestructivelyremovesthemaximumandminimumentriesfromthelist eachsubsequentretrievalofsupposedlyidenticaldatavaluesmightinfactreceiveashorterlist.avoiding beforereturningit.priortomemoization,thismightbeperfectlysafe.aftermemoizingraw-data,however, thisproblemnotonlyrequirestheuserofmemoizationtoknowhowthefunctiontobememoizedworks, Forinstance,supposethatfunctionRaw-Datareturnsanewly{createdlistofnumbers.Itiscalledbythe functionsthattrulyneedtousethem. 5.4CompilerOptimizationofRecursiveCalls thestandardsonwhenmodifyingoperationsareallowed,andtorequireincreaseddocumentationforthose butalsohowitwillbeusedbyotherfunctions.thisisoftenadiculttask;aneasierapproachistotighten memoizationprocess.toavoidthisproblem,thecompilermustbeinstructednottoeliminatetail{recursion tioneliminatestherecursivefunctioncall,butnottheworkrequiredtocalculatethefunction'sresult.since memoizationreliesonexplicitfunctioncallstoactivateitstable{lookup,suchoptimizationwillbypassthe inmemoizedroutines.compilersthatdooptimizetail{recursionusuallyprovideanappropriatecompiler Somecompilerswilloptimizethecodetheyoutputbyconvertingtail{recursiontoiteration.Suchoptimiza- atrun{time.suchcompilerswilloftenbypassthenameresolutionprocessfordirectrecursion.when memoizationisimplementedbybindingthememoizedfunctiontotheoriginalfunctionname,thisonce directive,forusebythememoizationmachinery. Amoresubtleoptimizationissometimesmadebycompilersforlanguagesthatresolvefunctionnames 14
15 againresultsinacircumventionofthememoizationtable{lookup.thefunctionwillstillreturncorrect results,butthecomputationsavingsprovidedbymemoizationwillbelost.itislesscommonforacompiler togivetheuserexplicitcontroloverthiskindofoptimization.3 theresultsoftheoptimized{awayrecursivecallswillnotbecached,theresultsofthetop{levelcallswillbe cached.inthetermsoftheusecategoriesdescribedinsection2,thebenetsofrepetitionwithinafunction callarelostbutthoseduetorepetitionovertimearenot. Notethatthisproblemcaneliminatesome,butnotall,oftheadvantagesofmemoization.Although 5.5RecognizingCallEquivalence default.iffunctionfooisdenedas: Memoizationisperformedbydoinganexactmatchontheargumentlist,usingtheLispfunctionequalby andismemoized,allofthefollowingwillbetreatedasdistinct,eventhoughtheparametershaveidentical valuesinallcases: (defunfoo(&key(bar2)(baz3)...) (Foo) (Foo:Bar2) (Foo:Bar2:Baz3) that,forinstance,2isnotequalto2.0,and isnotequalto ,eventhoughthefunction Similarly,onecanhavecounterintuitiveresultswhentheargumentsareoatingpointnumbers,forgetting (Foo:Baz3) maytreatthemasidentical.thesolutionadoptedbythesmsprogramistointroduce\wrapper"functions (Foo:Baz3:Bar2) thatthecommercialcommonlispsystemwewereusingfailedtofollowthatdirective. form,thenpassthemontoaninternalfunctionthattakesonlyrequiredargumentsinthestandardformat. Itisthisinternalfunctionthatisthenmemoized. thattakekeywordarguments,oatingpointnumbers,etc.,canonicalizetheargumentsintosomecommon 3CommonLispcompilershavethenotinlinedirectiveforthis,althoughwediscoveredinthecourseofdevelopingCLAMP 15
16 5.6CacheValueRepresentation Inthecurrentsystem,theroutinesthatsavedatatodiskdosobyprintingtherepresentationoftheobject usingformat,directingtheoutputstreamtoale.thismeansthatlispobjectswhoseprintrepresentation cannotbeparsedbyreadcannotbesavedtodisk.someobjectssuchasclosinstancesandstructures allowthedenitionofacustomprintfunction,andthiscansometimesbeusedtosavethemtodisk.but thisisnotageneralmechanism,andspecial{purposecodewillneedtobewritteninthosecases. awarenessandoperationaladvicetohelptheshipreduceitsoveralldetectability.ithasbeendeveloped TheSignatureManagementSystem(SMS)isadecisionaidforsubmarinecrewsthatprovidessituational 6ExperienceandEvaluation CommonLisp,withtheremainderinC;itrunsonUNIXplatforms. andtwouniversitiesonthedevelopmentteam.thesystemcombinesavarietyofrepresentationsincluding overthelastveyearsunderarpafundingatthejohnshopkinsuniversityappliedphysicslaboratory (JHU/APL).OutsideofAPL,teammembershavecomeprimarilyfromindustry,witheightcorporations frames/objects,productionrules,mathematicalmodels,andproceduralcode.about75%iswrittenin memoization.allfourusesdescribedinsection2wereusedextensivelybymultipleprogrammers. threedierentcompanies.\permanent"memoization(i.e.usesotherthanproling)remainsinthereleasedsystemin25places.however,useasarst{cutprolingtoolwasoneofthemostcommonusesof TheautomaticmemoizationsystemwasusedintheSMSprogrambyatleastsixLispdevelopersfrom aftervarioususesofmemoizationwereputintoeect.ignoringthebenetswhentheuserasksforthesame 6.1SMSMagneticsModule memoizationonthersttimeinvocationofthetop{leveldisplay(whichisshowninfigure5).timesarein displayatdierenttimes(whichisinfactquitecommon),figure4givesasummaryofthetimebenetsof seconds,andareconservativeapproximations.similarresultswereobtainedwithothermodules. Figure4givestimingstatisticsforamagneticsmoduleusedintheSignatureManagementSystem,timed 16
17 aspect unmemoizedoriginal +conventionaloptimization +repetitionsovertime +dynamicprogrammingtime(sec)speedup +savedlookuptables , magneticsmoduleusedinthesignaturemanagementsystem. 6.2SMSDetectabilityPlanningDisplay Figure4:Theseguresshowthecumulativeeectsofthedierentaspectsofautomaticmemoizationona (theta)indicatingheading(0correspondingtoduenorth),andtheradius(r)correspondingtospeed.each detectionofthesubmarineforvariouschoicesofheadingandspeed,drawnonapolarplotwiththeangle estimatetheoverallcontributionofmemoizationtothesystem.forinstance,figure5showsadisplay usedasanaidtoplanningsubmarineoperationsinthesmssystem.itshowsthepredictedprobabilityof GiventhediverseusesofmemoizationbyvariousprogrammersontheSMSprogram,weattemptedto (r,theta)pair(arc)inthedisplayiscodedwithacolorindicatingthecumulativeprobabilityofdetectionfor methodsorsignatures.theuserfrequentlyisinterestedinthecontributionofindividualsignaturecomponentstothiscomposite.sincetheprobabilityofdetectionofeachcomponentismemoizedbeforeitis combinedintothecomposite,anycomponentcorrespondingtoapointonthedisplaycanberetrievedalmost Thisdisplayisusedasahigh{leveltoolinplanning,andthusincludeshighlysummarizedinformation. thesubifitweretooperateattheindicatedcourseandspeed. Itpresentsasinglenumberforprobabilityofdetectionwhichisacompositeofallthepotentialdetection computation. instantly.takingadvantageofthis,thedisplayoffigure6canbemaintainedwithvirtuallynoadditional speedandcourseforthepointunderthemouseiscalculated.then,theindividualcomponentsarecalculated, withtheirrelativevaluesshowninthebarcharts.duetotheeectsofmemoization,thecomponentvalues Whenevertheusermovesthemouseoverthecompositedetectabilitydisplay(Figure5),thecorresponding 17
18 probabilityofdetectionforthesubifitweretooperateatthecourseandspeed. indicatingheading,andtheradiuscorrespondingtospeed.eacharciscolorcodedtoindicatethecumulative ofdetectionofthesubmarineforvariouschoicesofheadingandspeed,drawnonapolarplotwiththeangle Figure5:Thetop{leveldisplayfromtheSMSsubmarineplanningsystemshowsthepredictedprobability 18
19 Theresults,giveninFigure7showa631ximprovementinspeed,anda4,822ximprovementintheamount canbecalculatedandgraphedasquicklyastheusercanmovethemouse. oftemporarymemory(garbage)allocated.benchmarksarenotoriouslymisleading,andinmanyplacesthe codewouldhavebeenwrittendramaticallydierentlyifmemoizationhadnotbeenavailable.nevertheless, theresultsareilluminating,especiallysincetheyrepresentimprovementsovertheoriginalbaselinesystem. Thesystemwasrunfromthisdisplayinthedefaultmodeandthenwithallmemoizationturnedo. Sincethecomputationofthissummarydisplayrepresentsthenal,high{levelcomputationoftheentire systemitisareasonablewaytomeasurethecontributionoftheuseofautomaticmemoization. 7Conclusions Automaticmemoizationisapowerfultoolthatallowsmanysimplebutinecientalgorithmstobemade theprevalenceofarapidprototypingapproachinsuchprojects. faroutweighthepotentialpitfallsofautomaticmemoizationinarticialintelligenceapplications,becauseof toamemoizedfunction,andtheabilitytoperformtimingandprolingstudiesrapidly.theseadvantages advantagestothearticialintelligenceprogrammer.theseadvantagesincludetheabilitytoaddpersistence usefulinpractice.beyondthisbasicadvantagethough,automaticmemoizationprovidesothersignicant Acknowledgements.ThisworkwassupportedinpartbytheAdvancedResearchProjectsAgencyunder ThinkingMachines,andispartoftheCMUAICD{ROM. SourcecodefortheCLAMPsystemisavailableviaanonymousFTP(ftp://ftp.cs.umbc.edu)orby (AAICorporation),J.PaulMcNamee(AAICorporation),PeterNorvig(SunMicrosystems),andDavidJ. Scheerer(TheJohnsHopkinsAppliedPhysicsLaboratory)fortheirhelpfulcomments,bothontheLISP theuseofthedivided--differenceexample.19 JHU/APLsubcontract605089{L.TheauthorsthankV.J.Benokraitis(AAICorporation),LienT.Duong implementationandonearlierversionsofthispaper.thankstojohnaspinall(symbolics)forsuggesting
20 signatureswhichmakeuptheoverallprobabilityofdetection.thiscomponentialanalysiswastrivialto Figure6:IntheSMSsystem,abarchartshowstherelativestrengthofeachoftheseveralcomponent recoverasasideeectofthedecisiontomemoizethecomputationoftheoverallprobabilityofdetection. Figure7:DramaticimprovementsinexecutiontimeandconsingwereobtainedintheoverallSMSsystem. unmemoized sec.2,969,392,724 memoized4.06sec. versiontimebytesconsed 615,784 20
21 References [2]ThomasH.Cormen,CharlesE.Leiserson,andRonaldL.Rivest.IntroductiontoAlgorithms.MIT [1]WardCheneyandDavidKincaid.NumericalMathematicsandComputing.Brooks/Cole,1980. [4]J.Earley.Anecientcontext-freeparsingalgorithm.CommunicationsoftheAssociationforComputing [3]S.W.Dietrich.Extensiontables:Memorelationsinlogicprogramming.InFourthInternationalSymposiumonLogicProgramming,pages264{273,1987. PressandMcGrawHill,1990. [5]AnthonyJ.FieldandPeterG.Harrison.FunctionalProgramming.Addison-Wesley,1988. Machinery,6(2):451{455,1970. [6]MartyHallandJamesMayeld.ImprovingtheperformanceofAIsoftware:Payosandpitfallsinusing [7]B.Homann.Termrewritingwithsharingandmemoization.InH.KirchnerandG.Levi,editors, automaticmemoization.inproceedingsofthesixthinternationalsymposiumonarticialintelligence, pages178{184.megabyte,september1993. [8]M.Kay.Algorithmschemataanddatastructuresinsyntacticprocessing.InProceedingsoftheSymposiumonTextProcessing.NobelAcademy,1980. Berlin,Heidelberg,1992. AlgebraicandLogicProgramming:Proc.oftheThirdInternationalConference,pages128{142.Springer, [9]DonaldE.Knuth.TheArtofComputerProgramming,volume2.Addison-Wesley,1969. [10]DonaldMichie.\memo"functionsandmachinelearning.Nature,218(1):19{22,April1968. [11]JackMostowandDonaldCohen.Automatingprogramspeedupbydecidingwhattocache.InProceedingsoftheNinthInternationalJointConferenceonArticialIntelligence,pages165{172.MorgaputationalLinguistics,17(1):91{98, [12]PeterNorvig.Techniquesforautomaticmemoizationwithapplicationstocontext-freeparsing.Com- KaufmannPublishers,Inc.,1985.
22 [13]PeterNorvig.ParadigmsofAIProgramming:CaseStudiesinCommonLISP.MorganKaufmann, [16]GerrySussmanandHalAbelson.TheStructureandInterpretationofComputerPrograms.MITPress, [15]GuyL.Jr.Steele.CommonLisp:TheLanguage.DigitalPress,secondedition,1990. [14]F.C.N.PereiraandS.M.Shieber.PrologandNatural-LanguageAnalysis.csli,Stanford,CA, [17]DavidS.Warren.Memoingforlogicprograms.CommunicationsoftheACM,35(3):93{111,1992. [18]DavidWenstrand,H.LeeDantzler,MartyHall,DavidScheerer,CharlesSinex,andDavidZaret.A DARPAAssociateTechnologySymposium,June1991. multipleknowledgebaseapproachtosubmarinestealthmonitoringandplanning.inproceedingsofthe 22
Demystifying cache. Kristian Lyngstøl Product Specialist Varnish Software AS
Demystifying cache Kristian Lyngstøl Product Specialist Varnish Software AS Montreal, March 2013 Agenda - The types of caches involved - The benefits of a cache - HTTP - Reverse proxy specifics Not: L1/L2
ExperienceUsingtheJILProcessProgrammingLanguage tospecifydesignprocesses StanleyM.SuttonJr.,BarbaraStaudtLerner,andLeonJ.Osterweil ComputerScienceDepartment UniversityofMassachusetts Amherst,Massachusetts01003
UniversalTemporalDataLanguages CindyXinminChenandCarloZaniolo UniversityofCaliforniaatLosAngeles ComputerScienceDepartment Abstract.Temporalreasoningandtemporalquerylanguagespresentdicultresearchchallenges,whichareslowlyyieldingtothecombinedattackofmanyinvestigationsmotivated
1. Use the class definition above to circle and identify the parts of code from the list given in parts a j.
public class Foo { private Bar _bar; public Foo() { _bar = new Bar(); public void foobar() { _bar.moveforward(25); 1. Use the class definition above to circle and identify the parts of code from the list
Advanced Bash Scripting. Joshua Malone ([email protected])
Advanced Bash Scripting Joshua Malone ([email protected]) Why script in bash? You re probably already using it Great at managing external programs Powerful scripting language Portable and version-stable
causeddroppingofthetos-basedroutingrequirementfromtheospfspecication.
ComputerScienceDepartment ImplementationandPerformanceMeasurements CollegePark,MD20742 UniversityofMaryland GeorgeApostolopoulos ofqosroutingextensionstoospf RochGuerin,SanjayKamat protocol,andonvariousperformancemeasurementsmadeonthebasisofthisimplementation
SQL Injection. SQL Injection. CSCI 4971 Secure Software Principles. Rensselaer Polytechnic Institute. Spring 2010 ...
SQL Injection CSCI 4971 Secure Software Principles Rensselaer Polytechnic Institute Spring 2010 A Beginner s Example A hypothetical web application $result = mysql_query(
Introduction to Python
Caltech/LEAD Summer 2012 Computer Science Lecture 2: July 10, 2012 Introduction to Python The Python shell Outline Python as a calculator Arithmetic expressions Operator precedence Variables and assignment
MeasuringWebPerformanceintheWideArea 111CummingtonSt,Boston,MA2215 PaulBarfordandMarkCrovella ComputerScienceDepartment BostonUniversity fbarford,[email protected] BU-CS-99-4 April26,1999 andcontinuedgrowthmakethisadicultquestiontoanswer.wedescribethewideareaweb
The Laboratory Exchange Network configuration setting is located in OpenEMR's Administration->Globals menu option on the Connectors tab.
Medical Information Integration OpenEMR Laboratory Results User Documentation Laboratory Exchange Network v1.0 1.0) Configuration The Laboratory Exchange Network configuration setting is located in OpenEMR's
X-S700 TAKAMATSU MACHINERY CO.,LTD. TAKAMATSU MACHINERY USA Inc. TAKAMATSU MACHINERY (THAILAND) CO.,LTD. TAKAMAZ MACHINERY EUROPE GmbH
MONIT. UNIX Systems Management
MONIT UNIX Systems Management Introduction monit is a utility for managing and monitoring, processes, files, directories and devices on a Unix system. Monit conducts automatic maintenance and repair and
AWS IoT (Beta) Developer Guide
AWS IoT (Beta) Developer Guide AWS IoT (Beta): Developer Guide Copyright 2015 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. The following are trademarks of Amazon Web Services,
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
COMPLEXITY, RESILIENCE, PROFITABILITY AND STABILITY
COMPLEXITY, RESILIENCE, PROFITABILITY AND STABILITY SURVIVING THE COMPLEXITIES AND TURBULENCE OF THE 21-ST CENTURY J. MARCZYK PH.D. ONTONIX Disclaimer The concepts and methods presented in this document
Department of Computing Imperial College London. BrowserAudit. A web application that tests the security of browser implementations
Department of Computing Imperial College London BrowserAudit A web application that tests the security of browser implementations Charlie Hothersall-Thomas Supervisor: Dr. Sergio Maffeis June 2014 Submitted
Systems Engineering. Analyse. Design. Implement. Delivery of product. Test. Time
RobinSharp SoftwareDevelopmentProjects DepartmentofInformationTechnology,DTU September2000 JensThygeKristensen Contents 1Introduction 2PhasesofaProject 2.2RequirementsAnalysis... 2.3ModellingandDesign...
Background and Development
Overview The RIASEC Inventory is designed to help people identify their most dominant work interests and then use this information to explore career options. It uses the RIASEC coding system developed
1. Stem. Configuration and Use of Stem
Configuration and Use of Stem 1. Stem 2. Why use Stem? 3. What is Stem? 4. Stem Architecture 5. Stem Hubs 6. Stem Messages 7. Stem Addresses 8. Message Types and Fields 9. Message Delivery 10. Stem::Portal
Rapid prototyping with rosh
Rapid prototyping with rosh Dan Lazewatsky (dlaz) Personal Robotics Lab School of Mechanical, Industrial and Manufacturing Engineering Oregon State University rosh history Originally written by Ken Conley
SyncTool for InterSystems Caché and Ensemble.
SyncTool for InterSystems Caché and Ensemble. Table of contents Introduction...4 Definitions...4 System requirements...4 Installation...5 How to use SyncTool...5 Configuration...5 Example for Group objects
The Use of DNS Resource Records
International Journal of Advances in Electrical and Electronics Engineering 230 Available online at www.ijaeee.com & www.sestindia.org/volume-ijaeee/ ISSN: 2319-1112 Simar Preet Singh Systems Engineer,
Introduction. Software Development and Change Management Recommendations
Introduction This document was created by a joint working group of the Futures Industry Association ( FIA ) Principal Traders Group and the FIA European Principal Traders Association (collectively FIA
Building SOA Applications with JAX-WS, JAX- RS, JAXB, and Ajax
Building SOA Applications with JAX-WS, JAX- RS, JAXB, and Ajax Mark Hansen Founder & President, AgileIT [email protected] S296157 Learn Powerful Coding Techniques for Building SOA Applications using
Continuous Delivery Workshop
Continuous Delivery Workshop deployment pipelines Workshop materials created by Jez Humble, Martin Fowler, Tom Sulston, & Neal Ford deployment pipelines tests, synergistic practices, incremental deployment
Faster PHP Through Java
Faster PHP Through Java ABSTRACT Using benchmarks and code samples throughout to anchor the discussion, this paper explores how Quercus -- Caucho's Java implementation of PHP -- can perform faster than
How To Develop A Domain Driven Web Development With Tapestry, Hivemind And Hibernate
Domain-Driven Web-Development with Tapestry, HiveMind and Hibernate Marcus Schulte Overview Background: What were we trying to achieve? Why domain-driven? Architecture of the foundation frameworks Putting
The heap sucks. The Stack is Back Jon Oberheide. Slide #2
b The heap sucks Slide #2 Heap vs. stack Excerpt from Objective quantitative scientific comparison of the heap and stack by Dr. Jono, PhD from the journal of Useless Computer Science: Heap: Stack: Complicated
TMMi Case Study. Methodology. Scope. Use TMMi to do a gap analysis for an independent
TMMi Case Study TMMi Case Study Presentation Use TMMi to do a gap analysis for an independent testing organisation Involves 2 assessors for 5 days Objectives Determine how well the organisation is meeting
The Django web development framework for the Python-aware
The Django web development framework for the Python-aware Bill Freeman PySIG NH September 23, 2010 Bill Freeman (PySIG NH) Introduction to Django September 23, 2010 1 / 18 Introduction Django is a web
Customer focus as a competitive advantage. Anthony Shaw
Customer focus as a competitive advantage Anthony Shaw Key messages Customer strategy in Hong Kong: Significant repeat sales Unique bancassurance customer service model Increasing number of affluent customers
COS 318: Operating Systems. File Layout and Directories. Topics. File System Components. Steps to Open A File
Topics COS 318: Operating Systems File Layout and Directories File system structure Disk allocation and i-nodes Directory and link implementations Physical layout for performance 2 File System Components
Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville
Software Engineering Component-Based Software Engineering Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To explain that CBSE is concerned with developing standardised components
S4 Classes in 15 pages, more or less
S4 Classes in 15 pages, more or less February 12, 2003 Overview The preferred mechanism for object oriented programming in R is described in Chambers (1998). The actual implementation is slightly different
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for Windows. Rev: A02. 2014 Pivotal Software, Inc.
PRODUCT DOCUMENTATION Greenplum Database Version 4.3 Client Tools for Windows Rev: A02 2014 Pivotal Software, Inc. Copyright 2014 Pivotal Software, Inc. All rights reserved. Pivotal Software, Inc. believes
Cultivating Agricultural Information Management System Using GIS Technology
Hitachi Review Vol. 58 (2009), No. 6 265 Cultivating Agricultural Information Management System Using GIS Technology Improving Agricultural Efficiency through Information Technology Osamu Nishiguchi Noriko
Instant SQL Programming
Instant SQL Programming Joe Celko Wrox Press Ltd. INSTANT Table of Contents Introduction 1 What Can SQL Do for Me? 2 Who Should Use This Book? 2 How To Use This Book 3 What You Should Know 3 Conventions
Design of Data Archive in Virtual Test Architecture
Journal of Information Hiding and Multimedia Signal Processing 2014 ISSN 2073-4212 Ubiquitous International Volume 5, Number 1, January 2014 Design of Data Archive in Virtual Test Architecture Lian-Lei
PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for UNIX. Rev: A02. 2014 Pivotal Software, Inc.
PRODUCT DOCUMENTATION Greenplum Database Version 4.3 Client Tools for UNIX Rev: A02 2014 Pivotal Software, Inc. Copyright 2014 Pivotal Software, Inc. All rights reserved. Pivotal Software, Inc. believes
Advanced Pig (or "we're not in Kansas anymore") Set operations in Map/Reduce How to parameterize an operation The oxymoron called "Pig Efficiency"
Advanced_Pig Page 1 Advanced Pig 2:25 PM Advanced Pig (or "we're not in Kansas anymore") Set operations in Map/Reduce How to parameterize an operation The oxymoron called "Pig Efficiency" Advanced_Pig
Computer Science 217
Computer Science 217 Midterm Exam Fall 2009 October 29, 2009 Name: ID: Instructions: Neatly print your name and ID number in the spaces provided above. Pick the best answer for each multiple choice question.
User Guidance in Business Process Modelling
User Guidance in Business Process Modelling Dissertation zur Erlangung des Doktorgrades der Naturwissenschaften vorgelegt von Diplom-Wirtschaftsinformatiker (FH) Matthias Born aus Albstadt genehmigt von
Universal DDoS Mitigation Bypass. DDoS Mitigation Lab
Universal DDoS Mitigation Bypass DDoS Mitigation Lab About Us Industry body formed to foster synergy among stakeholders to promote advancement in DDoS defense knowledge. DDoS Mitigation Lab Independent
Purchasing & Accounts Payable Automation for. Microsoft Dynamics GP & SL
Purchasing & Accounts Payable Automation for Microsoft Dynamics GP & SL PN 3 Objectives Improved Efficiencies Improved Financial Controls The Real Cost of Paper AP Automation Questions How can we get invoices
product information 03. 2014
DSD playback with Pro-Ject D/A converters With these Pro-Ject D/a converters is it possible to play DSD tracks from a computer: DAC Box DS (with free upgrade), DAC Box RS, Pre Box RS Digital. Tested with
WHITEPAPER Best Practices for Monitoring Business Transactions:
WHITEPAPER Best Practices for Monitoring Business Transactions: Business transaction monitoring has never been more critical to operational efficiency, yet there remains much confusion over methodology.
SAS Decision Services Engine XXXXXX Loggers Logger(file:///myMachine/Lev1/Web/Common/LogConfig/SASDecisionService Level sengine-log4j.
SAS Decision Services Engine XXXXXX Loggers Logger(file:///myMachine/Lev1/Web/Common/LogConfig/SASDecisionService Level sengine-log4j.xml) Root Logger com.sas.services.deployment.omi com.sas.rtdm.implementation.eventexecutor.activity_time
2012 Education Strategy
1 About Education Strategy 25 year history of assisting institutions in over 100 different markets develop and deploy curriculum First online partnership, a complete major, was in 2002 Executive team members
A Reference Architecture for Distributed Software Deployment
A Reference Architecture for Distributed Software Deployment Delft University of Technology, EEMCS, Department of Software Technology June 3, 2013 A Reference Architecture for Distributed Software Deployment
Table of Contents. Open-Xchange Authentication & Session Handling. 1.Introduction...3
Open-Xchange Authentication & Session Handling Table of Contents 1.Introduction...3 2.System overview/implementation...4 2.1.Overview... 4 2.1.1.Access to IMAP back end services...4 2.1.2.Basic Implementation
Ericsson Customer Management System 2.0 Training Programs. Catalog of Course Descriptions
Ericsson Customer Management System 2.0 Training Programs Catalog of Course Descriptions Catalog of Course Descriptions INTRODUCTION...3 E-TRAINING: ERICSSON CUSTOMER MANAGEMENT SYSTEM BASICS...4 ECMS
OSSIM. Open Source Security Information Management. Brian E. Lavender. Sac State. CSC 250, Spring 2008. Final Project
Open Source Security Information Management Sac State CSC 250, Spring 2008 Final Project 2008 1 Table of Contents Introduction...2 How Functions...2 Installation...5 Initial Configuration Steps...6 Creating
HTTP Protocol. Bartosz Walter <[email protected]>
HTTP Protocol Bartosz Walter Agenda Basics Methods Headers Response Codes Cookies Authentication Advanced Features of HTTP 1.1 Internationalization HTTP Basics defined in
Asset Condition Monitoring Solutions
Asset Condition Monitoring Solutions Our Company Metrix is the preferred supplier of industrial vibration monitoring systems and services to many of the world s leading manufacturers and users of cooling
TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for STUDENT-ACCESS LABS
IT Services Service Level Agreement TECHNICAL SUPPORT and HARDWARE/SOFTWARE/NETWORK MAINTENANCE for STUDENT-ACCESS LABS IT Services Service Level Agreement:Student-Access Labs This service level agreement
Scapy. On-the-fly Packet Generation by [email protected]. Dienstag, 10. Januar 12
Scapy On-the-fly Packet Generation by [email protected] 1 Overview Repetition of network basics Python Basics Scapy Basics Example: SYN Scan Hands-on: Traceroute Promiscuous Scan ARP Spoofing 2 Layers
National Competency Standards. For. Mobile Application Developer
Finalized & Validated by Industrial Advisory Group (IAG) 13th December 2013 National Competency Standards For Mobile Application Developer Page 1 Introduction The National Competency Standards are written
Test for I-DEAS FEATURES APPLICATIONS 83-0056-000 14A TRANSIENT POST-PROCESSING SOFTWARE FOR FIXED SAMPLE ORDER TRACKING
83-0056-000 14A Test for I-DEAS TRANSIENT POST-PROCESSING SOFTWARE FOR FIXED SAMPLE ORDER TRACKING FEATURES Advanced User Interface Providing Ease-of-Use In Post-Processing Time History Data Real-Time
Assignment 3 Version 2.0 Reactive NoSQL Due April 13
CS 635 Advanced OO Design and Programming Spring Semester, 2016 Assignment 3 2016, All Rights Reserved, SDSU & Roger Whitney San Diego State University -- This page last updated 4/2/16 Assignment 3 Version
Federated Directory Services
Federated Directory Services for the connected enterprise Federated Directory Server helps overcome the challenge of distributed identity data, which is a significant hurdle to the deployment of new enterprise
22C:22 (CS:2820) Object-Oriented Software Development
The University of Iowa 22C:22 (CS:2820) Object-Oriented Software Development Fall 2012 Software Complexity by Cesare Tinelli Complexity Software systems are complex artifacts Failure to master this complexity
GravityLab Multimedia Inc. Windows Media Authentication Administration Guide
GravityLab Multimedia Inc. Windows Media Authentication Administration Guide Token Auth Menu GravityLab Multimedia supports two types of authentication to accommodate customers with content that requires
A No-Frills Introduction to Lua 5.1 VM Instructions
A No-Frills Introduction to Lua 5.1 VM Instructions Version 0.1, 20060313 by Kein-Hong Man, esq. Contents 1 Introduction 2 2 Lua Instruction Basics 3 3 Really Simple Chunks 5 4
CIS 192: Lecture 10 Web Development with Flask
CIS 192: Lecture 10 Web Development with Flask Lili Dworkin University of Pennsylvania Last Week s Quiz req = requests.get("http://httpbin.org/get") 1. type(req.text) 2. type(req.json) 3. type(req.json())
TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for TICKETING DATABASE
IT Services Service Level Agreement TECHNICAL SUPPORT and HARDWARE/SOFTWARE/NETWORK MAINTENANCE for TICKETING DATABASE IT Services Service Level Agreement:Ticketing Database This service level agreement
Introduction to Manufacturing Process
Introduction to Manufacturing Process What is Manufacturing? The English word manufacture is several centuries old. The term manufacture comes from two Latin words, manus (hand) and factus (make). As per
SETUP GUIDE: MOON USB HD DSD Driver. MOON Nēo 340i D 3 MOON Nēo 350P D 3. MOON Evolution 780D. Musical Ecstasy. Date Code: 20150820
SETUP GUIDE: MOON USB HD DSD Driver MOON Nēo 230HAD MOON Nēo 280D DSD MOON Nēo 340i D 3 MOON Nēo 350P D 3 MOON Nēo 380D DSD MOON Nēo 430HA MOON Evolution 780D Musical Ecstasy Date Code: 20150820 USB HD
Property Tax Real. hio. Taxpayer The tax is paid by all real property owners unless specifically exempt.
108 Property Tax Real Taxpayer The tax is paid by all real property owners unless specifically exempt. Tax Base The tax is based on the assessed value of land and buildings. Assessed value is 35 percent
GLOBAL SERVICES. www.haefely.com www.hipotronics.com. reliable. precision. H I G H V O LTA G E TEST SOLUTIONS
GLOBAL SERVICES reliable. precision. www.haefely.com www.hipotronics.com H I G H V O LTA G E TEST SOLUTIONS 2 Partnership COMPETENT PARTNERSHIP THE CUSTOMER IS OUR SERVICE PARTNER This is central to our
ZEND PHP 5 Certification
php architect s ZEND PHP 5 Certification STUDY GUIDE Davey Shafik with Ben Ramsey php architect s Zend PHP 5 Certification Study Guide by Davey Shafik with Ben Ramsey php architect s Zend PHP 5 Certification
Applied Internet Technology (CSCI-UA.0480) - Sample Questions
Applied Internet Technology (CSCI-UA.0480) - Sample Questions A reference is provided on the last page. This does not represent the length of the actual midterm (this has more questions) 1. Two broad categories
