{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,2,21]],"date-time":"2025-02-21T10:41:37Z","timestamp":1740134497097,"version":"3.37.3"},"reference-count":17,"publisher":"Association for Computing Machinery (ACM)","issue":"6","license":[{"start":{"date-parts":[[2019,5,23]],"date-time":"2019-05-23T00:00:00Z","timestamp":1558569600000},"content-version":"vor","delay-in-days":365,"URL":"http:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100006785","name":"Google","doi-asserted-by":"crossref","award":["Google PhD Fellowship"],"id":[{"id":"10.13039\/100006785","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCF-1012195,CCF-1439008"],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Commun. ACM"],"published-print":{"date-parts":[[2018,5,23]]},"abstract":"Improving performance is a central concern for software developers. To locate optimization opportunities, developers rely on software profilers. However, these profilers only report where programs spend their time: optimizing that code may have no impact on performance. Past profilers thus both waste developer time and make it difficult for them to uncover significant optimization opportunities.<\/jats:p>\n \n This paper introduces\n causal profiling.<\/jats:italic>\n Unlike past profiling approaches, causal profiling indicates exactly where programmers should focus their optimization efforts, and quantifies their potential impact. Causal profiling works by running\n performance experiments<\/jats:italic>\n during program execution. Each experiment calculates the impact of any potential optimization by\n virtually speeding<\/jats:italic>\n up code: inserting pauses that slow down all other code running concurrently. The key insight is that this slowdown has the same\n relative<\/jats:italic>\n effect as running that line faster, thus \"virtually\" speeding it up.\n <\/jats:p>\n We present Coz, a causal profiler, which we evaluate on a range of highly-tuned applications such as Memcached, SQLite, and the PARSEC benchmark suite. Coz identifies previously unknown optimization opportunities that are both significant and targeted. Guided by Coz, we improve the performance of Memcached by 9%, SQLite by 25%, and accelerate six PARSEC applications by as much as 68%; in most cases, these optimizations involve modifying under 10 lines of code.<\/jats:p>","DOI":"10.1145\/3205911","type":"journal-article","created":{"date-parts":[[2018,5,23]],"date-time":"2018-05-23T15:08:42Z","timestamp":1527088122000},"page":"91-99","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Coz"],"prefix":"10.1145","volume":"61","author":[{"given":"Charlie","family":"Curtsinger","sequence":"first","affiliation":[{"name":"Grinnell College"}]},{"given":"Emery D.","family":"Berger","sequence":"additional","affiliation":[{"name":"University of Massachusetts Amherst"}]}],"member":"320","published-online":{"date-parts":[[2018,5,23]]},"reference":[{"doi-asserted-by":"publisher","key":"e_1_2_1_1_1","DOI":"10.1145\/1869459.1869519"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_1","DOI":"10.1145\/2451116.2451141"},{"doi-asserted-by":"publisher","key":"e_1_2_1_3_1","DOI":"10.1145\/2815400.2815409"},{"doi-asserted-by":"publisher","key":"e_1_2_1_4_1","DOI":"10.1145\/2660193.2660210"},{"key":"e_1_2_1_5_1","volume-title":"Debugging with GDB","author":"Free Software Foundation","unstructured":"Free Software Foundation. Debugging with GDB, 10th edn., The Free Software Foundation, Boston, MA.","edition":"10"},{"doi-asserted-by":"publisher","key":"e_1_2_1_6_1","DOI":"10.1145\/1993498.1993553"},{"doi-asserted-by":"publisher","key":"e_1_2_1_7_1","DOI":"10.1145\/800230.806987"},{"key":"e_1_2_1_8_1","volume-title":"Intel VTune Amplifier","author":"Intel","year":"2015","unstructured":"Intel. Intel VTune Amplifier, 2015."},{"volume-title":"perf: Linux profiling with performance counters","year":"2014","unstructured":"kernel.org. perf: Linux profiling with performance counters, 2014.","key":"e_1_2_1_9_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_10_1","DOI":"10.1145\/1925019.1925022"},{"key":"e_1_2_1_11_1","volume-title":"Oprofile: A system profiler for Linux","author":"Levon J.","year":"2004","unstructured":"Levon, J., Elie, P. Oprofile: A system profiler for Linux, 2004. http:\/\/oprofile.sourceforge.net\/."},{"doi-asserted-by":"publisher","key":"e_1_2_1_12_1","DOI":"10.1287\/opre.1110.0940"},{"key":"e_1_2_1_13_1","first-page":"489","volume":"482","author":"Miller B.P.","year":"1987","unstructured":"Miller, B.P., Yang, C.-Q. IPS: An interactive and automatic performance measurement tool for parallel and distributed programs. In ICDCS, 1987, 482--489.","journal-title":"ICDCS"},{"doi-asserted-by":"publisher","unstructured":"Mytkowicz T. Diwan A. Hauswirth M. Sweeney P.F. Evaluating the accuracy of Java profilers. In PLDI (2010) ACM 187--197. 10.1145\/1806596.1806618","key":"e_1_2_1_14_1","DOI":"10.1145\/1806596.1806618"},{"doi-asserted-by":"publisher","key":"e_1_2_1_15_1","DOI":"10.1002\/spe.4380240802"},{"doi-asserted-by":"publisher","key":"e_1_2_1_16_1","DOI":"10.1145\/1345206.1345234"},{"doi-asserted-by":"publisher","key":"e_1_2_1_17_1","DOI":"10.1109\/CGO.2009.15"}],"container-title":["Communications of the ACM"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3205911","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3205911","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,7,14]],"date-time":"2024-07-14T22:49:15Z","timestamp":1720997355000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3205911"}},"subtitle":["finding code that counts with causal profiling"],"short-title":[],"issued":{"date-parts":[[2018,5,23]]},"references-count":17,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2018,5,23]]}},"alternative-id":["10.1145\/3205911"],"URL":"https:\/\/doi.org\/10.1145\/3205911","relation":{},"ISSN":["0001-0782","1557-7317"],"issn-type":[{"type":"print","value":"0001-0782"},{"type":"electronic","value":"1557-7317"}],"subject":[],"published":{"date-parts":[[2018,5,23]]},"assertion":[{"value":"2018-05-23","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}