{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,24]],"date-time":"2025-06-24T15:48:05Z","timestamp":1750780085900,"version":"3.41.0"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2018,9,24]],"date-time":"2018-09-24T00:00:00Z","timestamp":1537747200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"European Research Council under the EU's Horizon2020 Framework Programme\/ERC","award":["647295 (SYMBIOSYS)"],"award-info":[{"award-number":["647295 (SYMBIOSYS)"]}]},{"DOI":"10.13039\/501100001659","name":"German Research Foundation","doi-asserted-by":"crossref","award":["625799"],"award-info":[{"award-number":["625799"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Model. Comput. Simul."],"published-print":{"date-parts":[[2018,10,31]]},"abstract":"<jats:p>Processes in computer simulations tend to be highly repetitive. In particular, parameter studies further exasperate the situation as the same model is repeatedly executed with only partially varying parameters. Consequently, computer simulations perform identical computations, with identical code, identical input, and hence identical output. These redundant computations waste significant amounts of time and energy.<\/jats:p>\n          <jats:p>Memoization, dating back to 1968, enables the caching of such identical intermediate results, thereby significantly speeding up those computations. However, until now, automated approaches were limited to pure functions. At ACM SIGSIM-PADS 2016 we published, to the best of our knowledge, the first practical approach for automated memoization for impure code. In this work, we extend this approach and evaluate the performance characteristics of a number of extensions that deal with questions posed at PADS: (1) To reduce and bound the memory footprint, we investigate several cache eviction strategies. (2) We allow the original and the memoized code to coexist via a runtime-switch and analyze the crossover point, thereby mitigating memoization overhead. (3) By optionally persisting the Memoization Cache to disk, we expand the scope to exploratory parameter studies where cached results can now be reused across multiple simulation runs.<\/jats:p>\n          <jats:p>Altogether, automated memoization for impure code is a valuable technique, the versatility of which we explore further in this article. It sped up a case study of an OFDM network simulation by a factor of more than 80 with an only marginal increase of memory consumption.<\/jats:p>","DOI":"10.1145\/3186316","type":"journal-article","created":{"date-parts":[[2018,9,24]],"date-time":"2018-09-24T12:05:57Z","timestamp":1537790757000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":10,"title":["On Automated Memoization in the Field of Simulation Parameter Studies"],"prefix":"10.1145","volume":"28","author":[{"given":"Mirko","family":"Stoffers","sequence":"first","affiliation":[{"name":"Communication and Distributed Systems, RWTH Aachen University, Aachen, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Daniel","family":"Schemmel","sequence":"additional","affiliation":[{"name":"Communication and Distributed Systems, RWTH Aachen University, Aachen, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Oscar Soria","family":"Dustmann","sequence":"additional","affiliation":[{"name":"Communication and Distributed Systems, RWTH Aachen University, Aachen, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Klaus","family":"Wehrle","sequence":"additional","affiliation":[{"name":"Communication and Distributed Systems, RWTH Aachen University, Aachen, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,9,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1480945.1480946"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328476"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0022-5193(89)80211-5"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2769458.2769482"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/564062.564080"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/JRPROC.1946.234568"},{"volume-title":"Proceedings of the 6th International Symposium on Artificial Intelligence.","year":"1993","author":"Hall Marty","key":"e_1_2_2_7_1"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190455.1190468"},{"key":"e_1_2_2_9_1","unstructured":"Ralf Hinze. 2000. Memo functions polytypically&excl; In Proceedings of the 2nd Workshop on Generic Programming. 17--32.  Ralf Hinze. 2000. Memo functions polytypically&excl; In Proceedings of the 2nd Workshop on Generic Programming. 17--32."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/268437.268523"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/508366.508370"},{"key":"e_1_2_2_12_1","unstructured":"ISO. 2014. ISO\/IEC 14882:2014 Information Technology \u2014 Programming Languages \u2014 C++. International Organization for Standardization Geneva Switzerland. 1358 pages.  ISO. 2014. ISO\/IEC 14882:2014 Information Technology \u2014 Programming Languages \u2014 C++. International Organization for Standardization Geneva Switzerland. 1358 pages."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICNC.2012.17"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/161494.161501"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1287\/opre.47.1.159"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/272991.272995"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.5555\/791219.791666"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/286385.286386"},{"volume-title":"Memo Functions: A Language Feature with \u201cRote-Learning","year":"1967","author":"Michie Donald","key":"e_1_2_2_19_1"},{"key":"e_1_2_2_20_1","doi-asserted-by":"crossref","unstructured":"Donald Michie. 1968. Memo functions and machine learning. Nature 218 5136 (1968) 19--22.  Donald Michie. 1968. Memo functions and machine learning. Nature 218 5136 (1968) 19--22.","DOI":"10.1038\/218019a0"},{"volume-title":"Proceedings of the 9th International Joint Conference on Artificial Intelligence. 165--172","year":"1985","author":"Mostow Jack","key":"e_1_2_2_21_1"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.5555\/971738.971743"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/238788.238818"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2901378.2901394"},{"key":"e_1_2_2_26_1","unstructured":"Christoph Sommer. 2017. Veins. (23 June 2017). veins.car2x.org retrieved Aug 17 2017.  Christoph Sommer. 2017. Veins. (23 June 2017). veins.car2x.org retrieved Aug 17 2017."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/TMC.2010.133"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.5555\/3199858.3199865"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2901378.2901386"},{"volume-title":"Proceedings of the 25th International Multi-Conference on Parallel and Distributed Computing and Networks. 230--235","year":"2007","author":"Tsumura Tomoaki","key":"e_1_2_2_30_1"},{"volume-title":"Proceedings of the 15th European Simulation MC.","year":"2001","author":"Varga Andr\u00e0s","key":"e_1_2_2_31_1"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/MASCOTS.2010.40"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/TVT.2007.895490"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/238788.238820"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/888251.888277"}],"container-title":["ACM Transactions on Modeling and Computer Simulation"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3186316","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3186316","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T02:11:27Z","timestamp":1750212687000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3186316"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,9,24]]},"references-count":34,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2018,10,31]]}},"alternative-id":["10.1145\/3186316"],"URL":"https:\/\/doi.org\/10.1145\/3186316","relation":{},"ISSN":["1049-3301","1558-1195"],"issn-type":[{"type":"print","value":"1049-3301"},{"type":"electronic","value":"1558-1195"}],"subject":[],"published":{"date-parts":[[2018,9,24]]},"assertion":[{"value":"2016-11-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-02-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-09-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}