Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
Writing efficient programsJanuary 1982
Publisher:
  • Prentice-Hall, Inc.
  • Division of Simon and Schuster One Lake Street Upper Saddle River, NJ
  • United States
ISBN:978-0-13-970251-8
Published:01 January 1982
Pages:
186
Skip Bibliometrics Section
Reflects downloads up to 15 Oct 2024Bibliometrics
Skip Abstract Section
Abstract

The primary task of software engineers is the cost-effective development of maintainable and useful software. There are many secondary problems lurking in that definition. One such problem arises from the term "useful": to be useful in the application at hand, software must often be efficient (that is, use little time or space). The problem we will consider in this book is building efficient software systems.

There are a number of levels at which we may confront the problem of efficiency. These are defined in Section 1.2 and include the overall system design, the program's algorithms and data structures, the translation to machine code, and the underlying system software and hardware; many books discuss efficiency. at each of those levels. In this book we will investigate efficiency at a design level that is practiced by many but discussed by few. This level is called "writing efficient code" and can be defined as follows:

The activity of writing efficient code takes as input a high-level language program (which incorporates efficient algorithms and data structures) and produces as output a program in the same high-level language that is suitable for compilation into efficient machine code. The operations undertaken at this level are beneath most work on algorithms and data structures yet are too complex for most current and foreseeable compilers.

References

  1. Aho, A. V. [1980]. Private communication of A. V. Aho of Bell Telephone Laboratories, Murray Hill, NJ, December 1980.Google ScholarGoogle Scholar
  2. Aho. A. V., J. E. Hopcroft, and J. D. Ullman [1974]. The Design and Analysis of Computer Algorithms, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  3. Aho, A. V. and J. D. Ullman [1977]. Principles of Compiler Design, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  4. Auslander, M. A. and H. R. Strong [1978]. "Systematic recursion removal", Communications of the ACM 21, 2, February 1978, pp. 127--134.Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Baase, S. [1978]. Computer Algorithms: Introduction to Design and Analysis, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  6. Baskett, F. [1978]. "The best simple code generation techniques for WHILE, FOR and DO loops", SIGPlan Notices 13, 4, April 1978, pp. 31--32.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Beeler, M., R. W. Gosper, and R. Schroeppel [1972]. HAKMEM, Artificial Intelligence Memo No. 239, Massachusetts Institute of Technology, February 1972.Google ScholarGoogle Scholar
  8. Bentley, J. L. [1979]. "An introduction to algorithm design", IEEE Computer Magazine 12, 2, February 1979, pp. 66--78.Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Bentley, J. L., M. G. Faust, and F. P. Preparata [1982]. "Approximation algorithms for convex hulls", Communications of the ACM 25, 1, January 1982, pp. 64--68.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Bentley, J. L. and J. H. Friedman [1979]. "Data structures for range searching", Computing Surveys 11, 4, December 1979, pp. 397--409.Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Bentley, J. L. and J. B. Saxe [1980]. "An analysis of two heuristics for the euclidean travelling salesman problem", Eighteenth Annual Allerton Conference on Communication, Control and Computing, October 1980, pp. 41--49, University of Illinois Coordinated Science Laboratory.Google ScholarGoogle Scholar
  12. Bergeron, R. D. and H. R. Bulterman [1975]. "A technique for evaluation of user systems on an IBM S/370", Software---Practice and Experience 5, 1, January-March 1975, pp. 83--92.Google ScholarGoogle ScholarCross RefCross Ref
  13. Bird, R. S. [1980]. "Tabulation techniques for recursive programs", Computing Surveys 12, 4, December 1980, pp. 403--417.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Boyer, R. S. and J. S. Moore [1977]. "A fast string searching algorithm", Communications of the ACM 20, 10, October 1977, pp. 762--772.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Brailsford, D. F., E. Foxley, K. C. Mander, and D. J. Morgan [1979]. "Run-time profiling of Algol 68-R programs using DIDYMUS and SCAMP", SIGPlan Notices 12, 6, June 1977, pp. 27--35.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Brooks, F. P., Jr. [1975]. The Mythical Man Month: Essays in Software Engineering, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  17. Burstall, R. M. and J. Darlington [1977]. "A transformation system for developing recursive programs", Journal of the ACM 24, 1, January 1977, pp. 44--67.Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Cattell, R. G. [1981]. Private communication of R. G. Cattell of Xerox Palo Alto Research Center, Palo Alto, CA, May 1981.Google ScholarGoogle Scholar
  19. Conway, R. W. and D. Gries [1976]. Primer on Structured Programming Using PL/I, PL/C, and PL/CT, Winthrop, Cambridge, MA.Google ScholarGoogle Scholar
  20. Darlington, J. and R. M. Burstall [1976]. "A system which automatically improves programs", Acta Informatica 6, 1, pp. 41--60.Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Deutsch, L. P. [1981]. Private communication of L. P. Deutsch of Xerox Palo Alto Research Center, Palo Alto, CA, August 1981.Google ScholarGoogle Scholar
  22. Dongarra, J. J. and A. R. Hinds [1979]. "Unrolling loops in FORTRAN", Software---Practice and Experience 9, 3, March 1979, pp. 219--226.Google ScholarGoogle ScholarCross RefCross Ref
  23. Feign, D. A. [1980]. Programming tricks of last resort for desperados: an investigation into the advantages of assembly language coding, unpublished Ph.D. Thesis, Department of Information and Computer Science, University of California at Irvine.Google ScholarGoogle Scholar
  24. Feldman, S. [1981]. Private communication of S. Feldman of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  25. Finkel, R. A. [1981]. Private communication of R. A. Finkel of the University of Wisconsin, Madison, WI, June 1981.Google ScholarGoogle Scholar
  26. Fitch, G. P. [1977]. "Profiling a large program", Software---Practice and Experience 7, 4, July-August 1977, pp. 511--518.Google ScholarGoogle ScholarCross RefCross Ref
  27. Friedman, J. H., J. L. Bentley, and R. A. Finkel [1977]. "An algorithm for finding best matches in logarithmic expected time", ACM Transactions on Mathematical Software 3, 3, September 1977, pp. 209--226.Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Fuller, S. H. and F. Baskett [1975]. "An analysis of drum storage units", Journal of the ACM 22, 1, January 1975, pp. 83--105.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Gardner, M. [1970]. "Mathematical games", Scientific American 223, 4, October 1970, pp. 120--123.Google ScholarGoogle ScholarCross RefCross Ref
  30. Goodman, S. E. and S. T. Hedetniemi [1977]. Introduction to the Design and Analysis of Algorithms, McGraw-Hill, New York, NY.Google ScholarGoogle Scholar
  31. Gosling, J. A. [1981]. Private communication of J. A. Gosling of Carnegie-Mellon University, Pittsburgh, PA, June 1981.Google ScholarGoogle Scholar
  32. Gunther, F. J. [1981]. "Programming for speed", Computers and Programming 21, 5, September/October 1981, pp. 65, 68.Google ScholarGoogle Scholar
  33. Heindel, L. E. and P. W. Purdom, Jr. [1967]. "The automatic optimization of SLIP routines", SIGSAM Bulletin, Number 8, December 1967, pp. 21--30.Google ScholarGoogle Scholar
  34. Horowitz, E. and S. Sahni [1978]. Fundamentals of Computer Algorithms, Computer Science Press, Inc., Rockville, MD.Google ScholarGoogle Scholar
  35. Jackson, M. A. [1975]. Principles of Program Design, Academic Press, New York, NY.Google ScholarGoogle Scholar
  36. Jalics, P. J. [1977]. "Improving performance the easy way", Datamation 23, 4, April 1977, pp. 135--148.Google ScholarGoogle Scholar
  37. Jefferson, D. R. [1981]. Private communication of D. R. Jefferson of the University of Southern California, Los Angeles, CA, November 1981.Google ScholarGoogle Scholar
  38. Jensen, K. and N. Wirth [1975]. Pascal User Manual and Report, Second Edition, Springer Verlag, New York, NY.Google ScholarGoogle Scholar
  39. Johnson, S. C. [1981]. Private communication of S. C. Johnson of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  40. Kernighan, B. W. [1981]. Private communication of B. W. Kernighan of Bell Telephone Laboratories, Murray Hill, NJ, February through November, 1981.Google ScholarGoogle Scholar
  41. Kernighan, B. W. and P. J. Plauger [1976]. Software Tools, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  42. Kernighan, B. W. and P. J. Plauger [1978]. The Elements of Programming Style, Second Edition, McGraw-Hill, New York, NY.Google ScholarGoogle Scholar
  43. Knuth, D. E. [1968]. The Art of Computer Programming, volume 1: Fundamental Algorithms, Addison-Wesley, Reading, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Knuth, D. E. [1969]. The Art of Computer Programming, volume 2: Seminumerical Algorithms, Addison-Wesley, Reading, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Knuth, D. E. [1971]. "An empirical study of FORTRAN programs", Software---Practice and Experience 1, 2, April-June 1971, pp. 105--133.Google ScholarGoogle ScholarCross RefCross Ref
  46. Knuth, D. E. [1973]. The Art of Computer Programming, volume 3: Sorting and Searching, Addison-Wesley, Reading, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Knuth, D. E. [1974]. "Structured programming with goto statements", Computing Surveys 6, 4, December 1974, pp. 261--301.Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Kreitzberg, C. S. and B. Shneiderman [1972]. The Elements of FORTRAN Style: Techniques for Effective Programming, Harcourt Brace Jovanovich, New York, NY.Google ScholarGoogle Scholar
  49. Kulsrud, H. E., R. Sedgewick, P. Smith, and T. G. Szymanski [1978]. Partition sorting on CRAY-1, SCAMP Working Paper No. 7/78, Institute for Defense Analyses, Princeton, NJ, September 1978.Google ScholarGoogle Scholar
  50. Laird, J. E. [1981]. Private communication of J. E. Laird of Carnegie-Mellon University, Pittsburgh, PA, March 1981.Google ScholarGoogle Scholar
  51. Lampson, B. W. and R. F. Sproull [1979]. "An open operating system for a single-user machine", Proceedings of the Seventh Symposium on Operating Systems Principles, December 1979, pp. 98--105, ACM.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Leverett, B. [1977]. Performance Evaluation of High-Level Language Systems, Carnegie-Mellon University Computer Science Technical Report, November 1977, 39 pp.Google ScholarGoogle ScholarCross RefCross Ref
  53. Lewis, H. and C. H. Papadimitriou [1978]. "The efficiency of algorithms", Scientific American 238, 1, January 1978, pp. 96--109.Google ScholarGoogle ScholarCross RefCross Ref
  54. Lewis, J. [1979]. "Low-level program optimization: Some illustrative cases", BYTE 4, 10, October 1979, pp. 168--172. (Reprinted in Liffick [1979].)Google ScholarGoogle Scholar
  55. Liffick, B. W., ed. [1979]. Programming Techniques, volume 4: Bits and Pieces, BYTE Books, McGraw-Hill, New York, NY.Google ScholarGoogle Scholar
  56. Loveman, D. B. [1977]. "Program improvement by source-to-source transformation", Journal of the ACM 24, 1, January 1974, pp. 121--145.Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Matwin, S. and M. Missala [1976]. "A simple, machine independent tool for obtaining rough measures of Pascal programs", SIGPlan Notices 11, 8, August 1976, pp. 42--45.Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. McCracken, D. D. [1957]. Digital Computer Programming, John Wiley and Sons, New York, NY.Google ScholarGoogle Scholar
  59. McFarland, M. C. [1981]. Mathematical models for formal verification in a design automation system, unpublished Ph.D. Thesis, Department of Electrical Engineering, Carnegie-Mellon University, July 1981.Google ScholarGoogle Scholar
  60. McIlroy, M. D. [1981]. Private communication of M. D. McIlroy of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  61. McKellar, A. C. and E. G. Coffman, Jr. [1969]. "Organizing matrices and matrix operations for paged memory systems", Communications of the ACM 12, 3, March 1969, pp. 153--165.Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. McNair, T. J. (ed.) [1972]. Hamilton Bailey's Emergency Surgery, Ninth Edition, John Wright and Sons, Ltd., Bristol, Great Britian (distributed in the U.S.A. by The Williams and Wilkins Company, Baltimore, MD).Google ScholarGoogle Scholar
  63. Mont-Reynaud, B. [1976]. Removing trivial assignments from programs, Stanford University Computer Science Department Report STAN-CS-76-544, Stanford, California, March 1976.Google ScholarGoogle Scholar
  64. Moon, D. A. [1981]. Private communication of D. A. Moon of the Massachusetts Institute of Technology, Cambridge, MA, March 1981.Google ScholarGoogle Scholar
  65. Morris, R. [1978]. "Counting large numbers of events in small registers", Communications of the ACM 21, 10, October 1978, pp. 840--842.Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Nelson, B. J. [1981]. Remote Procedure Call, Ph.D. Thesis, Carnegie-Mellon University, Computer Science Report CMU-CS-81-119, May 1981.Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Neuhold, E. J. and H. W. Lawson, Jr. [1971]. The PL/I Machine: An Introduction to Programming, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  68. Newell, A. [1981]. Private communication of A. Newell of Carnegie-Mellon University, Pittsburgh, PA, March 1981.Google ScholarGoogle Scholar
  69. Nix, R. [1981]. "Experience with a space efficient way to store a dictionary", Communications of the ACM 24, 5, May 1981, pp. 297--298.Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Noyce, W. B. [1978]. "Optimization: A case study", BYTE 3, 4, April 1978, pp. 40--45. (Reprinted in Liffick [1979].)Google ScholarGoogle Scholar
  71. Paige, R. [1979]. Expression Continuity and the Formal Differentiation of Algorithms, Courant Computer Science Report Number 15, September 1979.Google ScholarGoogle Scholar
  72. Peterson, J. L. [1975]. A Programming Methodology (Preliminary Version), Unpublished technical report, University of Texas at Austin, 13 pp.Google ScholarGoogle Scholar
  73. Peterson, J. L. [1979]. "Text compression", BYTE 4, 12, December 1979, pp. 106--118. (Reprinted in Liffick [1979].)Google ScholarGoogle Scholar
  74. Peterson, J. L. [1980]. Computer Programs for Spelling Correction: An Experiment in Program Design, Springer-Verlag, New York, NY.Google ScholarGoogle Scholar
  75. Peterson, J. L. [1981]. Private communication of J. L. Peterson of the University of Texas, Austin, TX, June 1981.Google ScholarGoogle Scholar
  76. Pike, R. [1981]. Private communication of R. Pike of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  77. Plattner, B. and J. Nievergelt [1981]. "Monitoring program execution: A survey", IEEE Computer Magazine 14, 11, November 1981, pp. 76--93.Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Polya, G. [1945]. How To Solve It, Princeton University Press, Princeton, NJ.Google ScholarGoogle Scholar
  79. Reddy, D. R. and A. Newell [1977]. "Multiplicative speedup of systems", in Perspectives on Computer Science, A. K. Jones (ed.), pp. 183--198, Academic Press, New York, NY.Google ScholarGoogle Scholar
  80. Reghbati, H. K. [1981], "An overview of data compression techniques", IEEE Computer Magazine 14, 4, April 1981, pp. 71--75.Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Reid, B. K. [1980]. Scribe: A Document Specification Language and Its Compiler, Ph.D. Thesis, Department of Computer Science, Carnegie-Mellon University, September 1980. (See also Reid and Walker [1980].)Google ScholarGoogle Scholar
  82. Reid, B. K. and J. H. Walker [1980]. Scribe User's Manual, Third Edition, published by Unilogic, Ltd., 160 N. Craig Street, Pittsburgh, PA, 15213.Google ScholarGoogle Scholar
  83. Reingold, E. M., J. Nievergelt, and N. Deo [1977]. Combinatorial Algorithms: Theory and Practice, Prentice-Hall, Englewood Cliffs, NJ.Google ScholarGoogle Scholar
  84. Ritchie, D. M. and K. Thompson [1978]. "The UNIX time-sharing system", Bell System Technical Journal 57, 6, pp. 1905--1930, July-August 1978. (An earlier version is in Communications of the ACM 17, 7, pp. 365--375, July 1974.)Google ScholarGoogle ScholarCross RefCross Ref
  85. Russell, R. D. [1978]. "The PDP-11: A case study of how not to design condition codes", Proceedings of the Fifth Annual Symposium on Computer Architecture, pp. 190--194, IEEE and ACM.Google ScholarGoogle Scholar
  86. Satterthwaite, E. H. [1972]. "Debugging tools for high level languages", Software---Practice and Experience 2, 3, July-September 1972, pp. 197--217.Google ScholarGoogle ScholarCross RefCross Ref
  87. Sauer, C. H. and K. M. Chandy [1981]. Computer Systems Performance Modeling, Prentice-Hall, Englewood Cliffs, NJ.Google ScholarGoogle Scholar
  88. Schaefer, M. [1973]. A Mathematical Theory of Global Program Optimization, Prentice-Hall, Englewood Cliffs, NJ.Google ScholarGoogle Scholar
  89. Scheifler, R. W. [1977]. "An analysis of inline substitution for a structured programming language", Communications of the ACM 20, 9, September 1977, pp. 647--654.Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Scherlis, W. L. [1980]. Expression Procedures and Program Derivation, Ph.D. Thesis, Stanford Computer Science Report STAN-CS-80-818, Stanford, CA, August 1980.Google ScholarGoogle Scholar
  91. Sedgewick, R. [1975]. Quicksort, Ph.D. Thesis, Stanford Computer Science Report STAN-CS-75-492, Stanford, CA, May 1975.Google ScholarGoogle Scholar
  92. Sedgewick, R. [1978]. "Implementing Quicksort programs", Communications of the ACM 21, 10, October 1978, pp. 847--857.Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Shaw, M. [1979]. A Formal System for Specifying and Verifying Program Performance, Carnegie-Mellon University Computer Science Technical Report CMU-CS-79-129, June 1979. (A preliminary version of the material in this report can be found in Wulf, Shaw, Hilfinger and Flon [1981, Section 6.5].)Google ScholarGoogle Scholar
  94. Shaw, M. and W. A. Wulf [1980]. "Toward relaxing assumptions in languages and their implementations", SIGPlan Notices 15, 3, March 1980, pp. 45--61.Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. Sites, R. L. [1978]. "Programming tools: Statement counts and procedure timings", SIGPlan Notices 13, 12, December 1978, pp. 98--101.Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Smith, C. U. [1978]. "Methods for improving the performance of applications programs", Computer Measurement Group Transactions 22, December 1978.Google ScholarGoogle Scholar
  97. Smith, C. U. [1980]. "Consider the performance of large software systems before implementations", Proceedings of the Computer Measurement Group 11, Boston, MA, December 1980.Google ScholarGoogle Scholar
  98. Smith, C. U. [1981]. "Increasing information systems productivity by software performance engineering", Duke University Computer Science Department Technical Report CS-1981-3, May 1981.Google ScholarGoogle Scholar
  99. Sproull, R. F. [1981a]. "Using program transformations to derive line-drawing algorithms", Carnegie-Mellon University Computer Science Technical Report CMU-CS-81-117, April 1981.Google ScholarGoogle Scholar
  100. Sproull R. F. [1981b]. Private communication of R. F. Sproull of Carnegie-mellon university, May 1981.Google ScholarGoogle Scholar
  101. Stanat, D. F. [1981]. Private communication of D. F. Stanat of the University of North Carolina, Chapel Hill, NC, November 1981.Google ScholarGoogle Scholar
  102. Standish, T. A. [1980]. Data Structure Techniques, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  103. Standish, T. A., D. C. Harriman, D. F. Kibler, and J. M. Neighbors [1976]. The Irvine Program Transformation Catalog, Technical Report, Department of Information and Computer Science, University of California at Irvine.Google ScholarGoogle Scholar
  104. Stankovich, J. A. [1979]. Structured Systems and Their Performance Improvement Through Vertical Migration, Technical Report No. CS-41, Department of Computer Science, Brown University, May 1979.Google ScholarGoogle Scholar
  105. Steele, G. L., Jr. [1977a]. "Debunking the 'expensive procedure call' myth", Proceedings of the ACM National Conference '77, October 1977, pp. 153--162.Google ScholarGoogle Scholar
  106. Steele, G. L., Jr. [1977b]. "Arithmetic shifting considered harmful", SIGPlan Notices 12, 11, November 1977, pp. 61--69.Google ScholarGoogle ScholarDigital LibraryDigital Library
  107. Steele, G. L., Jr. [1981]. Private communication of G. L. Steele Jr. of Carnegie-Mellon University, Pittsburgh, PA, April 1981.Google ScholarGoogle Scholar
  108. Van wyk, C. J. [1981]. Private communications of C. J. Van Wyk of Bell Telephone Laboratories, Murray Hill, NJ, December 1980 through July 1981.Google ScholarGoogle Scholar
  109. Vyssotsky, V. A. [1976]. What I'd Like Computer Science To Tell Me, unpublished internal memorandum, Bell Telephone Laboratories, Murray Hill, NJ, May 18, 1976, 12 pp.Google ScholarGoogle Scholar
  110. Vyssotsky, V. A. [1981]. Private communication of V. A. Vyssotsky of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  111. Waite, W. M. [1974]. "Code generation", in Compiler Construction: An Advanced Course, F. L. Bauer and J. Erckel (eds.), pp. 549--602, Springer-Verlag, New York, NY.Google ScholarGoogle Scholar
  112. Waldbaum, G. [1978]. Tuning Computer Users' Programs, IBM Computer Science Research Report RJ-2409, IBM Research Laboratory, San Jose, CA, December 4, 1978, 37 pp.Google ScholarGoogle Scholar
  113. Weinberg, G. M. [1971]. The Psychology of Computer Programming, Van Nostrand Reinhold Company, New York, NY.Google ScholarGoogle Scholar
  114. Weinberger, P. J. [1981]. Private communication of P. J. Weinberger of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google ScholarGoogle Scholar
  115. Wichman, B. A. [1976]. "Ackermann's function: A study in the efficiency of calling procedures", BIT 16, 1, pp. 103--110.Google ScholarGoogle ScholarCross RefCross Ref
  116. Wulf, W. A. [1981]. Private communication of W. A. Wulf of Carnegie-Mellon University, Pittsburgh, PA, April 1981.Google ScholarGoogle Scholar
  117. Wulf, W. A., R. K. Johnsson, C. B. Weinstock, S. O. Hobbs, and C. M. Geschke [1975]. Design of an Optimizing Compiler, American Elsevier Publishing Company, Inc., New York, NY.Google ScholarGoogle Scholar
  118. Wulf, W. A., M. Shaw, P. N. Hilfinger, and L. Flon [1981]. Fundamental Structures of Computer Science, Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar

Cited By

  1. ACM
    Calderón A, Carretero J, García-Carballeira F, Fernandez J, Higuero D and Bergua B Improving MPI applications with a new MPI_Info and the use of the memoization Proceedings of the 20th European MPI Users' Group Meeting, (7-12)
  2. ACM
    Stewart G, Beringer L and Appel A Verified heap theorem prover by paramodulation Proceedings of the 17th ACM SIGPLAN international conference on Functional programming, (3-14)
  3. ACM
    Stewart G, Beringer L and Appel A (2012). Verified heap theorem prover by paramodulation, ACM SIGPLAN Notices, 47:9, (3-14), Online publication date: 15-Oct-2012.
  4. ACM
    Azevedo R, Neto C, Teixeira M, Santos R and Gomes T Textual authoring of interactive digital TV applications Proceedings of the 9th European Conference on Interactive TV and Video, (235-244)
  5. Weber B, Reichert M, Mendling J and Reijers H (2011). Survey paper, Computers in Industry, 62:5, (467-486), Online publication date: 1-Jun-2011.
  6. Smith C Introduction to software performance engineering Proceedings of the 7th international conference on Formal methods for performance evaluation, (395-428)
  7. ACM
    Smits B Efficiency issues for ray tracing ACM SIGGRAPH 2005 Courses, (6-es)
  8. ACM
    Manolopoulos Y (2002). Binomial coefficient computation, ACM SIGCSE Bulletin, 34:4, (65-67), Online publication date: 1-Dec-2002.
  9. Lee C (1999). Partial Evaluation of the Euclidean Algorithm, Revisited, Higher-Order and Symbolic Computation, 12:2, (203-212), Online publication date: 1-Sep-1999.
  10. ACM
    Ball T (2019). The concept of dynamic analysis, ACM SIGSOFT Software Engineering Notes, 24:6, (216-234), Online publication date: 1-Nov-1999.
  11. Ball T The concept of dynamic analysis Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering, (216-234)
  12. Sazeides Y and Smith J Modeling program predictability Proceedings of the 25th annual international symposium on Computer architecture, (73-84)
  13. ACM
    Sazeides Y and Smith J (1998). Modeling program predictability, ACM SIGARCH Computer Architecture News, 26:3, (73-84), Online publication date: 1-Jun-1998.
  14. Toledo S Performance Prediction with Benchmaps Proceedings of the 10th International Parallel Processing Symposium, (479-485)
  15. Frakes W and Fox C (1996). Quality Improvement Using A Software Reuse Failure Modes Model, IEEE Transactions on Software Engineering, 22:4, (274-279), Online publication date: 1-Apr-1996.
  16. ACM
    Weis R and Gersting J A course on professionalism in the undergraduate CS curriculum Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education, (170-174)
  17. ACM
    Weis R and Gersting J (1993). A course on professionalism in the undergraduate CS curriculum, ACM SIGCSE Bulletin, 25:1, (170-174), Online publication date: 1-Mar-1993.
  18. ACM
    Perry D and Wolf A (1992). Foundations for the study of software architecture, ACM SIGSOFT Software Engineering Notes, 17:4, (40-52), Online publication date: 1-Oct-1992.
  19. ACM
    Chatterjee S, Blelloch G and Fisher A Size and access inference for data-parallel programs Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, (130-144)
  20. ACM
    Chatterjee S, Blelloch G and Fisher A (2019). Size and access inference for data-parallel programs, ACM SIGPLAN Notices, 26:6, (130-144), Online publication date: 1-Jun-1991.
  21. ACM
    Fraser C (1991). A retargetable compiler for ANSI C, ACM SIGPLAN Notices, 26:10, (29-43), Online publication date: 1-Oct-1991.
  22. ACM
    Smith D (1991). Algorithm 693: a FORTRAN package for floating-point multiple-precision arithmetic, ACM Transactions on Mathematical Software (TOMS), 17:2, (273-283), Online publication date: 1-Jun-1991.
  23. Smith C (2019). Applying Synthesis Principles to Create Responsive Software Systems, IEEE Transactions on Software Engineering, 14:10, (1394-1408), Online publication date: 1-Oct-1988.
  24. ACM
    Zahn C A phased programming paradigm Proceedings of the nineteenth SIGCSE technical symposium on Computer science education, (9-12)
  25. ACM
    Zahn C (1988). A phased programming paradigm, ACM SIGCSE Bulletin, 20:1, (9-12), Online publication date: 1-Feb-1988.
  26. ACM
    Perlman G and Sherwin L (1988). Designing menu display format to match input device format, ACM SIGCHI Bulletin, 20:2, (78-82), Online publication date: 1-Oct-1988.
  27. ACM
    Perlman G (1986). Coding quality and tools in programming methods, ACM SIGSOFT Software Engineering Notes, 11:3, (44-50), Online publication date: 1-Jul-1986.
  28. ACM
    Sanguinetti J (1984). Program optimization for a pipelined machine a case study, ACM SIGMETRICS Performance Evaluation Review, 12:3, (88-95), Online publication date: 1-Aug-1984.
  29. ACM
    Sanguinetti J Program optimization for a pipelined machine a case study Proceedings of the 1984 ACM SIGMETRICS conference on Measurement and modeling of computer systems, (88-95)
  30. ACM
    Brownsmith J and Oliver L (1984). Optimizing loops in programs compiled with the IBM PL/I optimizing compiler, ACM SIGPLAN Notices, 19:8, (77-84), Online publication date: 1-Aug-1984.
Contributors

Recommendations