Compiler implementation of ADTs using profile data

  • A. Dain Samples
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 641)


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.


Profile Data Default Representation Register Allocation Abstract Data Type Call Site 
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.


  1. Barstow, D. (November 1977): Automatic Construction of Algorithms and Data Structures using a Knowledge Base of Programming Rules. PhD Dissertation, Stanford UniversityGoogle Scholar
  2. Barstow, D. (January 1985): On Convergence Toward a Database of Program Transformations. ACM Transactions on Programming Languages and Systems 7, 1–9Google Scholar
  3. 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–49Google Scholar
  4. Ellis, M., Stroustrup, B. (1990): The Annotated C++ Reference Manual. Addison Wesley, Reading, MAGoogle Scholar
  5. Gilbreth, Jr., F.B., Carey, E.G. (1948): Cheaper by the Dozen. T.Y. Crowell, New YorkGoogle Scholar
  6. Hansen, G.J. (1974): Adaptive Systems for the Dynamic Run-time Optimization of Programs. PhD Dissertation, Carnegie-Mellon University, Pittsburgh, PAGoogle Scholar
  7. Kant, E. (1981): Efficiency Considerations in Program Synthesis. Stanford University, PhD DissertationGoogle Scholar
  8. Karr, M. (June 1984): Code Generation by Coagulation. Proceedings of the ACM-SIGPLAN 1984 Symposium on Compiler Construction, SIGPLAN Notices 19 Google Scholar
  9. Knuth, D.E. (1971): An Empirical Study of FORTRAN Programs. Software-Practice Experience 1, 105–133Google Scholar
  10. Knuth, D.E., Stevenson, F.R. (1973): Optimal measurement points for program frequency counts. BIT 13, 313–322Google Scholar
  11. Low, J.R. (August 1974): Automatic Coding: Choice of Data Structures. Computer Science Department, Stanford University, PhD Dissertation, Technical Report CS-452Google Scholar
  12. Low, J.R. (May 1978): Automatic Data Structure Selection: An Example and Overview. Communications of the ACM 21, 376–385Google Scholar
  13. 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 LanguagesGoogle Scholar
  14. McFarling, S. (April 3–6, 1989): Program Optimization for Instruction Caches. Symposium on Architectural Support for Programming Languages and Operating Systems, Boston, MAGoogle Scholar
  15. 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–58Google Scholar
  16. 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–27Google Scholar
  17. 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-18Google Scholar
  18. Rowe, L.A. (1976): A Formilization for Modelling Structures and the Generation of Efficient Implementation Structures. University of California, PhD DissertationGoogle Scholar
  19. Samples, A.D. (April 1991): Profile-driven compilation. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 91/627Google Scholar
  20. Samples, A.D. (October 1988): Code Reorganization for Instruction Caches. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 88/447Google Scholar
  21. 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.]Google Scholar
  22. Schwartz, J.T., Dewar, R.B.K., Dubinsky, E., Schonberg, E. (1986): Programming with Sets: An Introduction to SETL. Springer Verlag, BerlinGoogle Scholar
  23. 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, BerlinGoogle Scholar
  24. Smith, D.R., Goldberg, A. (November 1986): Towards a Performance Estimation Assistant. Palo Alto, CA. KES.U.86.10Google Scholar
  25. 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 Google Scholar
  26. Straub, R.M. (May 1988): Taliere: An Interactive System for Data Structuring SETL Programs. PhD Dissertation, Courant Institute of Mathematical Sciences, NYUGoogle Scholar
  27. Wall, D. (June 1986): Global Register Allocation at Link Time. Proceedings of the ACM-SIGPLAN 1986 Symposium on Compiler Construction, SIGPLAN Notices 21, 264–275Google Scholar
  28. 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–70Google Scholar
  29. 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 102Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • A. Dain Samples
    • 1
  1. 1.Department of Electrical and Computer EngineeringUniversity of CincinnatiCincinnatiUSA

Personalised recommendations