{"id":"https://openalex.org/W2009736000","doi":"https://doi.org/10.1145/2814270.2814290","title":"Performance problems you can fix: a dynamic analysis of memoization opportunities","display_name":"Performance problems you can fix: a dynamic analysis of memoization opportunities","publication_year":2015,"publication_date":"2015-10-23","ids":{"openalex":"https://openalex.org/W2009736000","doi":"https://doi.org/10.1145/2814270.2814290","mag":"2009736000"},"language":"en","primary_location":{"id":"doi:10.1145/2814270.2814290","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814270.2814290","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5088826103","display_name":"Luca Della Toffola","orcid":"https://orcid.org/0000-0002-2600-9594"},"institutions":[{"id":"https://openalex.org/I35440088","display_name":"ETH Zurich","ror":"https://ror.org/05a28rw58","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I35440088"]}],"countries":["CH"],"is_corresponding":true,"raw_author_name":"Luca Della Toffola","raw_affiliation_strings":["ETH Zurich, Switzerland"],"affiliations":[{"raw_affiliation_string":"ETH Zurich, Switzerland","institution_ids":["https://openalex.org/I35440088"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5013438083","display_name":"Michael Pradel","orcid":"https://orcid.org/0000-0003-1623-498X"},"institutions":[{"id":"https://openalex.org/I31512782","display_name":"Technical University of Darmstadt","ror":"https://ror.org/05n911h24","country_code":"DE","type":"education","lineage":["https://openalex.org/I31512782"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Michael Pradel","raw_affiliation_strings":["TU Darmstadt, Germany","[TU, Darmstadt, Germany]"],"affiliations":[{"raw_affiliation_string":"TU Darmstadt, Germany","institution_ids":["https://openalex.org/I31512782"]},{"raw_affiliation_string":"[TU, Darmstadt, Germany]","institution_ids":["https://openalex.org/I31512782"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5101575762","display_name":"Thomas R. Gross","orcid":"https://orcid.org/0000-0002-2038-2902"},"institutions":[{"id":"https://openalex.org/I35440088","display_name":"ETH Zurich","ror":"https://ror.org/05a28rw58","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I35440088"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Thomas R. Gross","raw_affiliation_strings":["ETH Zurich, Switzerland"],"affiliations":[{"raw_affiliation_string":"ETH Zurich, Switzerland","institution_ids":["https://openalex.org/I35440088"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5088826103"],"corresponding_institution_ids":["https://openalex.org/I35440088"],"apc_list":null,"apc_paid":null,"fwci":7.3221,"has_fulltext":false,"cited_by_count":60,"citation_normalized_percentile":{"value":0.9736057,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":90,"max":99},"biblio":{"volume":null,"issue":null,"first_page":"607","last_page":"622"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T12127","display_name":"Software System Performance and Reliability","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"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/T12127","display_name":"Software System Performance and Reliability","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9995999932289124,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9993000030517578,"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.989020824432373},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.9039865732192993},{"id":"https://openalex.org/keywords/overhead","display_name":"Overhead (engineering)","score":0.5623992681503296},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.47366365790367126},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.44164079427719116},{"id":"https://openalex.org/keywords/scalability","display_name":"Scalability","score":0.4383265972137451},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.43611377477645874},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.42336466908454895},{"id":"https://openalex.org/keywords/reuse","display_name":"Reuse","score":0.4227818250656128},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.3755651116371155},{"id":"https://openalex.org/keywords/distributed-computing","display_name":"Distributed computing","score":0.3699297308921814},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.2849596440792084},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.22312471270561218}],"concepts":[{"id":"https://openalex.org/C79516417","wikidata":"https://www.wikidata.org/wiki/Q1376168","display_name":"Memoization","level":4,"score":0.989020824432373},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.9039865732192993},{"id":"https://openalex.org/C2779960059","wikidata":"https://www.wikidata.org/wiki/Q7113681","display_name":"Overhead (engineering)","level":2,"score":0.5623992681503296},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.47366365790367126},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.44164079427719116},{"id":"https://openalex.org/C48044578","wikidata":"https://www.wikidata.org/wiki/Q727490","display_name":"Scalability","level":2,"score":0.4383265972137451},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.43611377477645874},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.42336466908454895},{"id":"https://openalex.org/C206588197","wikidata":"https://www.wikidata.org/wiki/Q846574","display_name":"Reuse","level":2,"score":0.4227818250656128},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.3755651116371155},{"id":"https://openalex.org/C120314980","wikidata":"https://www.wikidata.org/wiki/Q180634","display_name":"Distributed computing","level":1,"score":0.3699297308921814},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.2849596440792084},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.22312471270561218},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.0},{"id":"https://openalex.org/C18903297","wikidata":"https://www.wikidata.org/wiki/Q7150","display_name":"Ecology","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":2,"locations":[{"id":"doi:10.1145/2814270.2814290","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814270.2814290","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications","raw_type":"proceedings-article"},{"id":"pmh:oai:tubiblio.ulb.tu-darmstadt.de:98183","is_oa":false,"landing_page_url":"http://tubiblio.ulb.tu-darmstadt.de/98183/","pdf_url":null,"source":{"id":"https://openalex.org/S4377196390","display_name":"TUbilio (Technical University of Darmstadt)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I31512782","host_organization_name":"Technische Universit\u00e4t Darmstadt","host_organization_lineage":["https://openalex.org/I31512782"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Konferenzver\u00f6ffentlichung"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":49,"referenced_works":["https://openalex.org/W1490288975","https://openalex.org/W1527417319","https://openalex.org/W1999926936","https://openalex.org/W2009825697","https://openalex.org/W2012921833","https://openalex.org/W2017190028","https://openalex.org/W2020142017","https://openalex.org/W2025871578","https://openalex.org/W2031165841","https://openalex.org/W2035829578","https://openalex.org/W2052172035","https://openalex.org/W2052951836","https://openalex.org/W2060015309","https://openalex.org/W2065325279","https://openalex.org/W2068880428","https://openalex.org/W2074760252","https://openalex.org/W2080696000","https://openalex.org/W2085040115","https://openalex.org/W2087515886","https://openalex.org/W2095839586","https://openalex.org/W2096666207","https://openalex.org/W2098883184","https://openalex.org/W2100148636","https://openalex.org/W2102683450","https://openalex.org/W2103000863","https://openalex.org/W2107588378","https://openalex.org/W2112582249","https://openalex.org/W2117975184","https://openalex.org/W2126952942","https://openalex.org/W2128835824","https://openalex.org/W2133638476","https://openalex.org/W2144433126","https://openalex.org/W2145458045","https://openalex.org/W2148186462","https://openalex.org/W2149207009","https://openalex.org/W2149576136","https://openalex.org/W2150470619","https://openalex.org/W2157432684","https://openalex.org/W2157662360","https://openalex.org/W2159586681","https://openalex.org/W2163661306","https://openalex.org/W2166034429","https://openalex.org/W2166091242","https://openalex.org/W2170927924","https://openalex.org/W2221766821","https://openalex.org/W2293085049","https://openalex.org/W2401246285","https://openalex.org/W2403967084","https://openalex.org/W3151686641"],"related_works":["https://openalex.org/W2479014312","https://openalex.org/W1583465708","https://openalex.org/W2364921833","https://openalex.org/W1601646354","https://openalex.org/W4235959758","https://openalex.org/W4245265375","https://openalex.org/W2078700326","https://openalex.org/W1853049011","https://openalex.org/W1508811940","https://openalex.org/W2348711589"],"abstract_inverted_index":{"Performance":[0],"bugs":[1],"are":[2,193],"a":[3,19,48,63,88],"prevalent":[4],"problem":[5,23],"and":[6,56,82,114,203,226],"recent":[7],"research":[8],"proposes":[9],"various":[10],"techniques":[11],"to":[12,28,32,79,142,145,164,173,180,218],"identify":[13],"such":[14],"bugs.":[15,210],"This":[16],"paper":[17],"addresses":[18],"kind":[20],"of":[21,84,97,119,125,191],"performance":[22,176,209],"that":[24,36,66,69,135,156],"often":[25],"is":[26,78],"easy":[27,169],"address":[29],"but":[30],"difficult":[31],"identify:":[33],"redundant":[34],"computations":[35],"may":[37],"be":[38],"avoided":[39],"by":[40,195,215,222],"reusing":[41],"already":[42],"computed":[43],"results":[44],"for":[45,170,207],"particular":[46],"inputs,":[47],"technique":[49],"called":[50],"memoization.":[51],"To":[52,93],"help":[53],"developers":[54],"find":[55],"use":[57],"memoization":[58,154,188,212],"opportunities,":[59,189],"we":[60],"present":[61],"MemoizeIt,":[62],"dynamic":[64],"analysis":[65],"identifies":[67],"methods":[68,134,148],"repeatedly":[70],"perform":[71],"the":[72,95,117,123,131,146,171,175],"same":[73],"computation.":[74],"The":[75],"key":[76],"idea":[77],"compare":[80],"inputs":[81],"outputs":[83],"method":[85,102],"calls":[86,144],"in":[87,104,149],"scalable":[89],"yet":[90],"precise":[91],"way.":[92],"avoid":[94],"overhead":[96],"comparing":[98],"objects":[99,109],"at":[100],"all":[101],"invocations":[103],"detail,":[105],"MemoizeIt":[106,157,179,216],"first":[107],"compares":[108],"without":[110],"following":[111],"any":[112],"references":[113],"iteratively":[115],"increases":[116],"depth":[118],"exploration":[120],"while":[121],"shrinking":[122],"set":[124],"considered":[126],"methods.":[127],"After":[128],"each":[129],"iteration,":[130],"approach":[132],"ignores":[133],"cannot":[136],"benefit":[137],"from":[138],"memoization,":[139,166],"allowing":[140],"it":[141,159,168],"analyze":[143],"remaining":[147],"more":[150],"detail.":[151],"For":[152],"every":[153],"opportunity":[155],"detects,":[158],"provides":[160],"hints":[161],"on":[162],"how":[163],"implement":[165],"making":[167],"developer":[172],"fix":[174],"issue.":[177],"Applying":[178],"eleven":[181],"real-world":[182],"Java":[183],"programs":[184],"reveals":[185],"nine":[186],"profitable":[187],"most":[190],"which":[192],"missed":[194],"traditional":[196],"CPU":[197],"time":[198],"profilers,":[199],"conservative":[200],"compiler":[201],"optimizations,":[202],"other":[204],"existing":[205],"approaches":[206],"finding":[208],"Adding":[211],"as":[213],"proposed":[214],"leads":[217],"statistically":[219],"significant":[220],"speedups":[221],"factors":[223],"between":[224],"1.04x":[225],"12.93x.":[227]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":3},{"year":2022,"cited_by_count":4},{"year":2021,"cited_by_count":7},{"year":2020,"cited_by_count":11},{"year":2019,"cited_by_count":10},{"year":2018,"cited_by_count":7},{"year":2017,"cited_by_count":8},{"year":2016,"cited_by_count":6},{"year":2015,"cited_by_count":1}],"updated_date":"2026-02-26T08:16:20.718346","created_date":"2025-10-10T00:00:00"}
