{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,12,30]],"date-time":"2022-12-30T10:11:41Z","timestamp":1672395101570},"reference-count":47,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T00:00:00Z","timestamp":1226016000000},"content-version":"unspecified","delay-in-days":4969,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1995,4]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>This paper addresses the issue of analysing the run-time behaviour of lazy, higher-order functional programs. We examine the difference between the way that functional programmers and functional language implementors view program behaviour. Existing profiling techniques are discussed and a new technique is proposed which produces results that are straightforward for <jats:italic>programmers<\/jats:italic> to assimilate. The new technique, which we call <jats:italic>lexical profiling<\/jats:italic>, collects information about the run-time behaviour of functional programs, and reports the results with respect to the original source code rather than simply listing the actions performed at run-time. Lexical profiling complements implementation-specific profiling and is important because it provides a view of program activity which is largely independent of the underlying evaluation mechanism. Using the lexical profiler, programmers may easily relate results back to the source program. We give a full implementation of the lexical profiling technique for a sequential, interpretive graph reduction engine, and extensions for compiled and parallel graph reduction are discussed.<\/jats:p>","DOI":"10.1017\/s0956796800001337","type":"journal-article","created":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T16:12:15Z","timestamp":1226074335000},"page":"225-277","source":"Crossref","is-referenced-by-count":8,"title":["Lexical profiling: theory and practice"],"prefix":"10.1017","volume":"5","author":[{"given":"Chris","family":"Clack","sequence":"first","affiliation":[]},{"given":"Stuart","family":"Clayman","sequence":"additional","affiliation":[]},{"given":"David","family":"Parrott","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2008,11,7]]},"reference":[{"key":"S0956796800001337_ref046","unstructured":"Wright P. J. (1994) Optimised Redundant Cell Collection for Graph Reduction. PhD thesis, University College London, Department of Electronic Engineering."},{"key":"S0956796800001337_ref041","first-page":"227","volume-title":"Proc. Glasgow Workshop in Functional Programming","author":"Sansom","year":"1992"},{"key":"S0956796800001337_ref039","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000708"},{"key":"S0956796800001337_ref038","volume-title":"Proc. Glasgow Workshop in Functional Programming","author":"Runciman","year":"1992"},{"key":"S0956796800001337_ref034","volume-title":"FLIC \u2013 a Functional Language Intermediate Code","author":"Peyton Jones","year":"1989"},{"key":"S0956796800001337_ref032","unstructured":"Peyton Jones S. L. (1987a) The tag is dead \u2013 long live the packet. Posting on fp electronic mailing list."},{"key":"S0956796800001337_ref036","first-page":"184","volume-title":"Proc. FPCA Conference","author":"Peyton Jones","year":"1989"},{"key":"S0956796800001337_ref031","volume-title":"Proc. UK Performance Engineering Workshop","author":"Parrott","year":"1992"},{"key":"S0956796800001337_ref030","first-page":"224","volume-title":"Proc. Phoenix Seminar and Workshop on Declarative Programming","author":"Parrott","year":"1991"},{"key":"S0956796800001337_ref027","volume-title":"Proc. Fourth International Symposium on Programming Language Implementation and Logic Programming","author":"Nilsson","year":"1992"},{"key":"S0956796800001337_ref025","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380010203"},{"key":"S0956796800001337_ref023","first-page":"255","volume-title":"2nd International Workshop on Implementation of Functional Languages on Parallel Architectures","author":"King","year":"1990"},{"key":"S0956796800001337_ref022","first-page":"58","volume-title":"Proc. Conference on Compiler Construction","author":"Johnsson","year":"1984"},{"key":"S0956796800001337_ref021","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.98"},{"key":"S0956796800001337_ref019","first-page":"256","volume-title":"Proc. FPCA Conference","author":"Hughes","year":"1985"},{"key":"S0956796800001337_ref017","volume-title":"Proc. FPCA Conference","author":"Grant","year":"1993"},{"key":"S0956796800001337_ref016","volume-title":"An analysis of reference count garbage collection schemes for declarative languages","author":"Glaser","year":"1988"},{"key":"S0956796800001337_ref013","volume-title":"Proc. FPCA Conference. Lecture Notes in Computer Science","volume":"274","author":"Fairbairn","year":"1987"},{"key":"S0956796800001337_ref009","doi-asserted-by":"publisher","DOI":"10.1145\/356850.356854"},{"key":"S0956796800001337_ref008","first-page":"446","volume-title":"Proc. FPCA Conference","author":"Burn","year":"1987"},{"key":"S0956796800001337_ref006","doi-asserted-by":"publisher","DOI":"10.1145\/359460.359470"},{"key":"S0956796800001337_ref005","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/33.5.466"},{"key":"S0956796800001337_ref018","first-page":"351","volume-title":"Proc. Lisp and Functional Programming Conference","author":"Hudak","year":"1986"},{"key":"S0956796800001337_ref003","first-page":"202","volume-title":"Proc. FPCA Conference","author":"Augustsson","year":"1989"},{"key":"S0956796800001337_ref001","unstructured":"Appel A. W. , Duba B. F. and MacQueen D. B. (1988) Profiling in the presence of optimization and garbage collection. Distributed with the New Jersey SML compiler."},{"key":"S0956796800001337_ref033","volume-title":"The Implementation of Functional Programming Languages","author":"Peyton Jones","year":"1987"},{"key":"S0956796800001337_ref024","volume-title":"Proc. FPCA Conference","author":"Kozato","year":"1993"},{"key":"S0956796800001337_ref026","first-page":"343","volume-title":"Proc. Lisp and Functional Programming Conference","author":"Lermen","year":"1986"},{"key":"S0956796800001337_ref015","doi-asserted-by":"publisher","DOI":"10.1145\/872726.806987"},{"key":"S0956796800001337_ref045","first-page":"1","volume-title":"Proc. FPCA Conference","author":"Turner","year":"1985"},{"key":"S0956796800001337_ref011","first-page":"220","volume-title":"Proc. Lisp and Functional Programming Conference","author":"Clack","year":"1986"},{"key":"S0956796800001337_ref037","first-page":"364","volume-title":"Proc. Lisp and Functional Programming Conference","author":"Rudalics","year":"1986"},{"key":"S0956796800001337_ref043","unstructured":"Sansom P. M. (1994) Execution Profiling for Non-strict Functional Languages. PhD Thesis (in preparation), University of Glasgow, Department of Computing."},{"key":"S0956796800001337_ref029","volume-title":"Report on \u2018cost\u2019 and \u2018debug\u2019 primitive extensions to FLIC","author":"Parrott","year":"1990"},{"key":"S0956796800001337_ref042","volume-title":"Proc. Glasgow Workshop in Functional Programming","author":"Sansom","year":"1993"},{"key":"S0956796800001337_ref010","unstructured":"Clack C. D. and Parrott D. J. (1993) Compiled lexical profiling for tim. In preparation."},{"key":"S0956796800001337_ref007","first-page":"244","volume-title":"Proc. Lisp and Functional Programming Conference","author":"Burn","year":"1988"},{"key":"S0956796800001337_ref047","first-page":"223","volume-title":"Proc. USENIX Conference","author":"Zorn","year":"1988"},{"key":"S0956796800001337_ref040","volume-title":"Y-less execution through fractional reference-counting","author":"Shute","year":"1988"},{"key":"S0956796800001337_ref020","unstructured":"Hughes J. (1987) Managing reduction graphs with reference counts. Technical Report CSC\/87\/R2, University of Glasgow."},{"key":"S0956796800001337_ref035","volume-title":"Implementing Functional Languages: a tutorial","author":"Peyton Jones","year":"1992"},{"key":"S0956796800001337_ref044","unstructured":"Tolmach A. P. and Dingle A. T. (1990) Debugging in Standard ML of New Jersey. Distributed with the New Jersey SML compiler."},{"key":"S0956796800001337_ref014","volume-title":"When will deforestation stop","author":"Ferguson","year":"1988"},{"key":"S0956796800001337_ref012","unstructured":"Clayman S. (1993) Developing and Measuring a Parallel Rule Based System in a Functional Programming Environment. PhD thesis. University College London."},{"key":"S0956796800001337_ref002","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.127"},{"key":"S0956796800001337_ref028","unstructured":"Parrott D. J. (1993) Synthesising Parallel Functional Programs to Improve Dynamic Scheduling. PhD thesis, University College London."},{"key":"S0956796800001337_ref004","first-page":"218","volume-title":"Symposium on Lisp and Functional Programming","author":"Augustsson","year":"1984"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796800001337","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,13]],"date-time":"2019-05-13T22:47:09Z","timestamp":1557787629000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796800001337\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,4]]},"references-count":47,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1995,4]]}},"alternative-id":["S0956796800001337"],"URL":"https:\/\/doi.org\/10.1017\/s0956796800001337","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1995,4]]}}}