{"id":"https://openalex.org/W2206208003","doi":"https://doi.org/10.1145/2751559","title":"Intercepting Functions for Memoization","display_name":"Intercepting Functions for Memoization","publication_year":2015,"publication_date":"2015-06-24","ids":{"openalex":"https://openalex.org/W2206208003","doi":"https://doi.org/10.1145/2751559","mag":"2206208003"},"language":"en","primary_location":{"id":"doi:10.1145/2751559","is_oa":true,"landing_page_url":"https://doi.org/10.1145/2751559","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/2751559","source":{"id":"https://openalex.org/S26056741","display_name":"ACM Transactions on Architecture and Code Optimization","issn_l":"1544-3566","issn":["1544-3566","1544-3973"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"ACM Transactions on Architecture and Code Optimization","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://dl.acm.org/doi/pdf/10.1145/2751559","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5035820459","display_name":"Arjun Suresh","orcid":"https://orcid.org/0000-0003-3134-4650"},"institutions":[{"id":"https://openalex.org/I2802519937","display_name":"Institut de Recherche en Informatique et Syst\u00e8mes Al\u00e9atoires","ror":"https://ror.org/00myn0z94","country_code":"FR","type":"facility","lineage":["https://openalex.org/I1294671590","https://openalex.org/I1294671590","https://openalex.org/I1326498283","https://openalex.org/I205703379","https://openalex.org/I2802204017","https://openalex.org/I2802519937","https://openalex.org/I28221208","https://openalex.org/I4210127572","https://openalex.org/I4210159245","https://openalex.org/I56067802"]},{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":true,"raw_author_name":"Arjun Suresh","raw_affiliation_strings":["INRIA/IRISA, Rennes, France","ALF - Amdahl's Law is Forever (France)"],"affiliations":[{"raw_affiliation_string":"INRIA/IRISA, Rennes, France","institution_ids":["https://openalex.org/I2802519937","https://openalex.org/I1326498283"]},{"raw_affiliation_string":"ALF - Amdahl's Law is Forever (France)","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5026132133","display_name":"Bharath Narasimha Swamy","orcid":"https://orcid.org/0000-0002-3875-5236"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]},{"id":"https://openalex.org/I2802519937","display_name":"Institut de Recherche en Informatique et Syst\u00e8mes Al\u00e9atoires","ror":"https://ror.org/00myn0z94","country_code":"FR","type":"facility","lineage":["https://openalex.org/I1294671590","https://openalex.org/I1294671590","https://openalex.org/I1326498283","https://openalex.org/I205703379","https://openalex.org/I2802204017","https://openalex.org/I2802519937","https://openalex.org/I28221208","https://openalex.org/I4210127572","https://openalex.org/I4210159245","https://openalex.org/I56067802"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Bharath Narasimha Swamy","raw_affiliation_strings":["INRIA/IRISA, Rennes, France","ALF - Amdahl's Law is Forever (France)"],"affiliations":[{"raw_affiliation_string":"INRIA/IRISA, Rennes, France","institution_ids":["https://openalex.org/I2802519937","https://openalex.org/I1326498283"]},{"raw_affiliation_string":"ALF - Amdahl's Law is Forever (France)","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5068551139","display_name":"Erven Rohou","orcid":"https://orcid.org/0000-0002-8060-8360"},"institutions":[{"id":"https://openalex.org/I2802519937","display_name":"Institut de Recherche en Informatique et Syst\u00e8mes Al\u00e9atoires","ror":"https://ror.org/00myn0z94","country_code":"FR","type":"facility","lineage":["https://openalex.org/I1294671590","https://openalex.org/I1294671590","https://openalex.org/I1326498283","https://openalex.org/I205703379","https://openalex.org/I2802204017","https://openalex.org/I2802519937","https://openalex.org/I28221208","https://openalex.org/I4210127572","https://openalex.org/I4210159245","https://openalex.org/I56067802"]},{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Erven Rohou","raw_affiliation_strings":["INRIA/IRISA, Rennes, France","ALF - Amdahl's Law is Forever (France)"],"affiliations":[{"raw_affiliation_string":"INRIA/IRISA, Rennes, France","institution_ids":["https://openalex.org/I2802519937","https://openalex.org/I1326498283"]},{"raw_affiliation_string":"ALF - Amdahl's Law is Forever (France)","institution_ids":[]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5075222745","display_name":"Andr\u00e9 Seznec","orcid":"https://orcid.org/0000-0002-3058-6503"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]},{"id":"https://openalex.org/I2802519937","display_name":"Institut de Recherche en Informatique et Syst\u00e8mes Al\u00e9atoires","ror":"https://ror.org/00myn0z94","country_code":"FR","type":"facility","lineage":["https://openalex.org/I1294671590","https://openalex.org/I1294671590","https://openalex.org/I1326498283","https://openalex.org/I205703379","https://openalex.org/I2802204017","https://openalex.org/I2802519937","https://openalex.org/I28221208","https://openalex.org/I4210127572","https://openalex.org/I4210159245","https://openalex.org/I56067802"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Andr\u00e9 Seznec","raw_affiliation_strings":["INRIA/IRISA, Rennes, France","ALF - Amdahl's Law is Forever (France)"],"affiliations":[{"raw_affiliation_string":"INRIA/IRISA, Rennes, France","institution_ids":["https://openalex.org/I2802519937","https://openalex.org/I1326498283"]},{"raw_affiliation_string":"ALF - Amdahl's Law is Forever (France)","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":4,"corresponding_author_ids":["https://openalex.org/A5035820459"],"corresponding_institution_ids":["https://openalex.org/I1326498283","https://openalex.org/I2802519937"],"apc_list":null,"apc_paid":null,"fwci":4.9474,"has_fulltext":true,"cited_by_count":33,"citation_normalized_percentile":{"value":0.95474566,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":"12","issue":"2","first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11697","display_name":"Numerical Methods and Algorithms","score":0.9969000220298767,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.996399998664856,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/memoization","display_name":"Memoization","score":0.9321941137313843},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8852649927139282},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5403682589530945},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.41866374015808105},{"id":"https://openalex.org/keywords/optimizing-compiler","display_name":"Optimizing compiler","score":0.41321468353271484},{"id":"https://openalex.org/keywords/benchmark","display_name":"Benchmark (surveying)","score":0.4128879904747009},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.3910425305366516},{"id":"https://openalex.org/keywords/algorithm","display_name":"Algorithm","score":0.38713538646698}],"concepts":[{"id":"https://openalex.org/C79516417","wikidata":"https://www.wikidata.org/wiki/Q1376168","display_name":"Memoization","level":4,"score":0.9321941137313843},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8852649927139282},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5403682589530945},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.41866374015808105},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.41321468353271484},{"id":"https://openalex.org/C185798385","wikidata":"https://www.wikidata.org/wiki/Q1161707","display_name":"Benchmark (surveying)","level":2,"score":0.4128879904747009},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.3910425305366516},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.38713538646698},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.0},{"id":"https://openalex.org/C205649164","wikidata":"https://www.wikidata.org/wiki/Q1071","display_name":"Geography","level":0,"score":0.0},{"id":"https://openalex.org/C13280743","wikidata":"https://www.wikidata.org/wiki/Q131089","display_name":"Geodesy","level":1,"score":0.0},{"id":"https://openalex.org/C42560504","wikidata":"https://www.wikidata.org/wiki/Q15419395","display_name":"Top-down parsing","level":3,"score":0.0}],"mesh":[],"locations_count":4,"locations":[{"id":"doi:10.1145/2751559","is_oa":true,"landing_page_url":"https://doi.org/10.1145/2751559","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/2751559","source":{"id":"https://openalex.org/S26056741","display_name":"ACM Transactions on Architecture and Code Optimization","issn_l":"1544-3566","issn":["1544-3566","1544-3973"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"ACM Transactions on Architecture and Code Optimization","raw_type":"journal-article"},{"id":"pmh:2016REN1S106","is_oa":true,"landing_page_url":"http://www.theses.fr/2016REN1S106/document","pdf_url":"http://www.theses.fr/2016REN1S106/document","source":null,"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"Text"},{"id":"pmh:oai:HAL:tel-01410539v2","is_oa":true,"landing_page_url":"https://theses.hal.science/tel-01410539","pdf_url":"https://theses.hal.science/tel-01410539v2/document","source":{"id":"https://openalex.org/S4406922452","display_name":"SPIRE - Sciences Po Institutional REpository","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Programming Languages [cs.PL]. Universit\u00e9 de Rennes, 2016. English. &#x27E8;NNT : 2016REN1S106&#x27E9;","raw_type":"Theses"},{"id":"pmh:oai:HAL:hal-01178085v1","is_oa":false,"landing_page_url":"https://inria.hal.science/hal-01178085","pdf_url":null,"source":{"id":"https://openalex.org/S4406922466","display_name":"SPIRE - Sciences Po Institutional REpository","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"ACM Transactions on Architecture and Code Optimization, 2015, 12 (2), pp.23. &#x27E8;10.1145/2751559&#x27E9;","raw_type":"Journal articles"}],"best_oa_location":{"id":"doi:10.1145/2751559","is_oa":true,"landing_page_url":"https://doi.org/10.1145/2751559","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/2751559","source":{"id":"https://openalex.org/S26056741","display_name":"ACM Transactions on Architecture and Code Optimization","issn_l":"1544-3566","issn":["1544-3566","1544-3973"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"ACM Transactions on Architecture and Code Optimization","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[{"id":"https://openalex.org/F4320313934","display_name":"Institut national de recherche en informatique et en automatique (INRIA)","ror":"https://ror.org/02kvxyf05"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2206208003.pdf","grobid_xml":"https://content.openalex.org/works/W2206208003.grobid-xml"},"referenced_works_count":22,"referenced_works":["https://openalex.org/W1664707389","https://openalex.org/W1906952654","https://openalex.org/W1973268332","https://openalex.org/W1973789144","https://openalex.org/W1976517701","https://openalex.org/W1980201123","https://openalex.org/W2036853599","https://openalex.org/W2038639550","https://openalex.org/W2063886734","https://openalex.org/W2100048941","https://openalex.org/W2105138864","https://openalex.org/W2125762026","https://openalex.org/W2134633067","https://openalex.org/W2138683481","https://openalex.org/W2161992906","https://openalex.org/W2166773037","https://openalex.org/W2169875292","https://openalex.org/W2170472255","https://openalex.org/W2187230075","https://openalex.org/W2529638517","https://openalex.org/W4239813889","https://openalex.org/W4240181815"],"related_works":["https://openalex.org/W2002505081","https://openalex.org/W2083681681","https://openalex.org/W2577630842","https://openalex.org/W3146558274","https://openalex.org/W1172579163","https://openalex.org/W1488300410","https://openalex.org/W2138790427","https://openalex.org/W4246454774","https://openalex.org/W2162051035","https://openalex.org/W1597127505"],"abstract_inverted_index":{"Memoization":[0,22,264],"is":[1,166],"the":[2,6,18,30,67,137,183,242,283,287],"technique":[3,77,133],"of":[4,8,69,82,98,115,119,139,195,225,249,272,286],"saving":[5],"results":[7,201],"executions":[9,13],"so":[10],"that":[11,109,239],"future":[12],"can":[14,144,190],"be":[15,111,146],"omitted":[16],"when":[17],"input":[19],"set":[20,97],"repeats.":[21],"has":[23],"been":[24],"proposed":[25],"in":[26,113,274,282],"previous":[27],"literature":[28],"at":[29,66],"instruction,":[31],"basic":[32],"block,":[33],"and":[34,64,91,127,142,189,209,213,228,233,257],"function":[35,87,89],"levels":[36],"using":[37,95,206,218],"hardware,":[38],"as":[39,41,62,151,153,160,167,169],"well":[40,152],"pure":[42,86,101],"software--level":[43],"approaches":[44],"including":[45],"changes":[46],"to":[47,148,251,259,267,277],"programming":[48],"language.":[49],"In":[50],"this":[51],"article,":[52],"we":[53,245],"focus":[54],"on":[55,253,261,293],"software":[56,80],"memoization":[57,81,165,247],"for":[58,78,202],"procedural":[59],"languages":[60],"such":[61],"C":[63],"Fortran":[65],"granularity":[68],"a":[70,74,96,116,193,203,223,269,278],"function.":[71,289],"We":[72,198],"propose":[73],"simple":[75,168],"linker-based":[76],"enabling":[79,164],"any":[83,179],"dynamically":[84],"linked":[85],"by":[88,297],"interception":[90],"illustrate":[92],"our":[93],"framework":[94,175],"computationally":[99,130],"expensive":[100],"functions\u2014the":[102],"transcendental":[103,243],"functions.":[104],"Transcendental":[105],"functions":[106],"are":[107,129,162],"those":[108],"cannot":[110],"expressed":[112],"terms":[114],"finite":[117],"sequence":[118],"algebraic":[120],"operations":[121],"(trigonometric":[122],"functions,":[123,125,244],"exponential":[124],"etc.)":[126],"hence":[128],"expensive.":[131],"Our":[132,174,220],"does":[134,176],"not":[135,177],"need":[136],"availability":[138],"source":[140],"code":[141],"thus":[143],"even":[145],"applied":[147],"commercial":[149],"applications,":[150],"applications":[154,238],"with":[155,192],"legacy":[156],"codes.":[157],"As":[158],"far":[159],"users":[161],"concerned,":[163],"setting":[170],"an":[171,214],"environment":[172],"variable.":[173],"make":[178],"specific":[180],"assumptions":[181],"about":[182],"underlying":[184],"architecture":[185],"or":[186],"compiler":[187,211],"toolchains":[188],"work":[191],"variety":[194],"current":[196],"architectures.":[197],"present":[199],"experimental":[200],"x86-64":[204],"platform":[205,217],"both":[207],"gcc":[208],"icc":[210],"toolchains,":[212],"ARM":[215,262,294],"Cortex-A9":[216,295],"gcc.":[219],"experiments":[221],"include":[222],"mix":[224],"real-world":[226],"programs":[227],"standard":[229,236],"benchmark":[230,237,292],"suites:":[231],"SPEC":[232],"Splash2x.":[234],"On":[235],"extensively":[240],"call":[241],"report":[246],"benefits":[248],"up":[250,258],"50%":[252],"Intel":[254],"Ivy":[255],"Bridge":[256],"10%":[260],"Cortex-A9.":[263],"was":[265],"able":[266],"regain":[268],"performance":[270,280],"loss":[271],"76%":[273],"bwaves":[275],"due":[276],"known":[279],"bug":[281],"GNU":[284],"implementation":[285],"pow":[288],"The":[290],"same":[291],"benefited":[296],"more":[298],"than":[299],"200%.":[300]},"counts_by_year":[{"year":2025,"cited_by_count":2},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":6},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":6},{"year":2018,"cited_by_count":8},{"year":2017,"cited_by_count":5},{"year":2016,"cited_by_count":2}],"updated_date":"2026-04-05T17:49:38.594831","created_date":"2016-06-24T00:00:00"}
