{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,2]],"date-time":"2026-10-02T12:15:35Z","timestamp":1790943335098,"version":"4.1.0"},"reference-count":18,"publisher":"Wiley","issue":"8","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4838,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,8]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The allocation and disposal of memory is a ubiquitous operation in most programs. Rarely do programmers concern themselves with details of memory allocators; most assume that memory allocators provided by the system perform well. Yet, in some applications, programmers use domain\u2010specific knowledge in an attempt to improve the speed or memory utilization of memory allocators.<\/jats:p><jats:p>In this paper, we describe a program (CustoMalloc) that synthesizes a memory allocator customized for a specific application. Our experiments show that the synthesized allocators are uniformly faster and more space efficient than the Berkeley UNIX allocator. Constructing a custom allocator requires little programmer effort, usually taking only a few minutes. Experience has shown that the synthesized allocators are not overly sensitive to properties of input sets and the resulting allocators are superior even to domain\u2010specific allocators designed by programmers. Measurements show that synthesized allocators are from two to ten times faster than widely\u2010used allocators.<\/jats:p>","DOI":"10.1002\/spe.4380230804","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T16:45:25Z","timestamp":1163781925000},"page":"851-869","source":"Crossref","is-referenced-by-count":42,"title":["Customalloc: Efficient synthesized memory allocators"],"prefix":"10.1002","volume":"23","author":[{"given":"Dirk","family":"Grunwald","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Benjamin","family":"Zorn","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/51607.51619"},{"key":"e_1_2_1_3_2","volume-title":"Data Structures Techniques","author":"Standish T.","year":"1980"},{"key":"e_1_2_1_4_2","unstructured":"B.ZornandD.Grunwald \u2018Evaluating models of memory allocation\u2019 Tech. Rep. CS\u2010CS\u2010603\u201092 Department of Computer Science University of Colorado Boulder Boulder CO July1992. In preparation."},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/142181.142200"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1147\/sj.231.0044"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/362052.362055"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1147\/sj.104.0283"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/3532.3536"},{"key":"e_1_2_1_10_2","unstructured":"C. B.Weinstock \u2018Dynamic storage allocation techniques\u2019 Ph.D. Thesis Carnegie Mellon University Pittsburgh PA 1976."},{"key":"e_1_2_1_11_2","unstructured":"D. G.KornandK.\u2010P.Vo \u2018In search of a better malloc\u2019 Proc. Summer 1985 USENIX Conference 1985 pp.489\u2013506."},{"key":"e_1_2_1_12_2","first-page":"435","volume-title":"Fundamental Algorithms, The Art of Computer Programming","author":"Knuth D. E.","year":"1973"},{"key":"e_1_2_1_13_2","doi-asserted-by":"crossref","unstructured":"C. J.Stephenson \u2018Fast fits: new methods for dynamic storage allocation\u2019 Proc. Ninth ACM Symposium on Operating System Principles Bretton Woods NH October1983 pp.30\u201332.","DOI":"10.1145\/773379.806613"},{"key":"e_1_2_1_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/358841.358852"},{"key":"e_1_2_1_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/357994.358020"},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380120606"},{"key":"e_1_2_1_17_2","doi-asserted-by":"crossref","unstructured":"T.BallandJ. R.Larus \u2018Optimally profiling and tracing programs\u2019 Conference Record of the Nineteenth ACM Symposium on Principles of Programming Languages January1992 pp.59\u201370.","DOI":"10.1145\/143165.143180"},{"key":"e_1_2_1_18_2","doi-asserted-by":"crossref","unstructured":"D.Grunwald B.ZornandR.Henderson \u2018Improving the cache locality of memory allocation\u2019 SIGPLAN'93 Conference on Programming Language Design and Implementation June1993.","DOI":"10.1145\/155090.155107"},{"key":"e_1_2_1_19_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380230704"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380230804","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380230804","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,24]],"date-time":"2023-10-24T21:23:43Z","timestamp":1698182623000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380230804"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,8]]},"references-count":18,"journal-issue":{"issue":"8","published-print":{"date-parts":[[1993,8]]}},"alternative-id":["10.1002\/spe.4380230804"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380230804","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1993,8]]}}}