Abstract
There are many possible implementations of some very useful programming abstractions (sets, lists, and maps, to name a few), and selecting from among them is currently one of the early tasks in the design of a software system. While programming discipline and/or language features may allow the user to change implementations of an abstraction relatively easily, there remains the inherent problem of selecting a consistent and efficient set of implementations for a particular program. A small set of extensions to existing languages allows the specification of the necessary profile data within that of the implementation of the abstraction. The TypeSetter system selects a consistent and efficient set of implementations for a program's abstractions based on the collected profile data.
Supported in part by an AT&T Bell Laboratories Scholarship, and by Defense Advanced Research Projects Agency (DoD), monitored by Space and Naval Warfare Systems Command under Contract N00039-88-C-0292 at University of California, Berkeley.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Barstow, D. (November 1977): Automatic Construction of Algorithms and Data Structures using a Knowledge Base of Programming Rules. PhD Dissertation, Stanford University
Barstow, D. (January 1985): On Convergence Toward a Database of Program Transformations. ACM Transactions on Programming Languages and Systems 7, 1–9
Dewar, R.B.K., Grand, A., Liu, S-C., Schwartz, J.T. (January 1979): Programming by Refinement, as Exemplified by the SETL Representation Sublanguage. ACM Transactions on Programming Languages and Systems 1, 27–49
Ellis, M., Stroustrup, B. (1990): The Annotated C++ Reference Manual. Addison Wesley, Reading, MA
Gilbreth, Jr., F.B., Carey, E.G. (1948): Cheaper by the Dozen. T.Y. Crowell, New York
Hansen, G.J. (1974): Adaptive Systems for the Dynamic Run-time Optimization of Programs. PhD Dissertation, Carnegie-Mellon University, Pittsburgh, PA
Kant, E. (1981): Efficiency Considerations in Program Synthesis. Stanford University, PhD Dissertation
Karr, M. (June 1984): Code Generation by Coagulation. Proceedings of the ACM-SIGPLAN 1984 Symposium on Compiler Construction, SIGPLAN Notices 19
Knuth, D.E. (1971): An Empirical Study of FORTRAN Programs. Software-Practice Experience 1, 105–133
Knuth, D.E., Stevenson, F.R. (1973): Optimal measurement points for program frequency counts. BIT 13, 313–322
Low, J.R. (August 1974): Automatic Coding: Choice of Data Structures. Computer Science Department, Stanford University, PhD Dissertation, Technical Report CS-452
Low, J.R. (May 1978): Automatic Data Structure Selection: An Example and Overview. Communications of the ACM 21, 376–385
Low, J.R., Rovner, P. (January 1976): Techniques for the Automatic Selection of Data Structures. Conference Record of the Third ACM Symposium on Principles of Programming Languages
McFarling, S. (April 3–6, 1989): Program Optimization for Instruction Caches. Symposium on Architectural Support for Programming Languages and Operating Systems, Boston, MA
Morris, W.G. (June 26–28, 1991): CCG: A Prototype Coagulating Code Generator. Proceedings of the ACM-SIGPLAN 1991 Conference on Programming Language Design and Implementation 26, 45–58
Pettis, K., Hansen, R.C. (June 20–22, 1990): Profile Guided Code Positioning. Proceedings of the ACM-SIGPLAN 1990 Conference on Programming Language Design and Implementation 25, 16–27
Ramirez, R.J. (March 1980): Efficient Algorithms for Selecting Efficient Data Storage Structures. Faculty of Mathematics, University of Waterloo, PhD Dissertation, Technical Report CS-80-18
Rowe, L.A. (1976): A Formilization for Modelling Structures and the Generation of Efficient Implementation Structures. University of California, PhD Dissertation
Samples, A.D. (April 1991): Profile-driven compilation. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 91/627
Samples, A.D. (October 1988): Code Reorganization for Instruction Caches. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 88/447
Samples, A.D., Hilfinger, P. (October 1990): Profile-Driven Compilation. InfoCon '90, Tokyo, Japan. [The pages are out of order in the proceedings; the order should be: 169, 172,171,170,174,173,175,176.]
Schwartz, J.T., Dewar, R.B.K., Dubinsky, E., Schonberg, E. (1986): Programming with Sets: An Introduction to SETL. Springer Verlag, Berlin
Sherman, M.S. (1985): Paragon: A Language Using Type Hierarchies for the Specification, Implementation and Selection of Abstract Data Types. (Lecture Notes in Computer Science, vol. 189) Springer Verlag, Berlin
Smith, D.R., Goldberg, A. (November 1986): Towards a Performance Estimation Assistant. Palo Alto, CA. KES.U.86.10
Smith, D.R., Kotik, G.B., Westfold, S.J. (November 1985): Research on Knowledge-Based Software Environments at Kestrel Institute. IEEE Transactions on Software Engineering SE-11
Straub, R.M. (May 1988): Taliere: An Interactive System for Data Structuring SETL Programs. PhD Dissertation, Courant Institute of Mathematical Sciences, NYU
Wall, D. (June 1986): Global Register Allocation at Link Time. Proceedings of the ACM-SIGPLAN 1986 Symposium on Compiler Construction, SIGPLAN Notices 21, 264–275
Wall, D.W. (June 26–28, 1991): Predicting Program Behavior Using Real or Estimated Profiles. Proceedings of the ACM-SIGPLAN 1991 Conference on Programming Language Design and Implementation 26, 59–70
Weiss, G. (March 1986): Recursive Data Types in SETL: Automatic Determination, Data Language Description, and Efficient Implementation. Courant Institute of Mathematical Sciences, NYU, Department of Computer Science, Technical Report 102
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dain Samples, A. (1992). Compiler implementation of ADTs using profile data. In: Kastens, U., Pfahler, P. (eds) Compiler Construction. CC 1992. Lecture Notes in Computer Science, vol 641. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-55984-1_9
Download citation
DOI: https://doi.org/10.1007/3-540-55984-1_9
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55984-9
Online ISBN: 978-3-540-47335-0
eBook Packages: Springer Book Archive