Next:
5.1 Advanced Compiler Introduction
Up:
CMU Common Lisp User's
Previous:
4.8 Open Coding and
5 Advanced Compiler Use and Efficiency Hints
By Robert MacLachlan
5.1 Advanced Compiler Introduction
5.1.1 Types
5.1.2 Optimization
5.1.3 Function Call
5.1.4 Representation of Objects
5.1.5 Writing Efficient Code
5.2 More About Types in Python
5.2.1 More Types Meaningful
5.2.2 Canonicalization
5.2.3 Member Types
5.2.4 Union Types
5.2.5 The Empty Type
5.2.6 Function Types
5.2.7 The Values Declaration
5.2.8 Structure Types
The Freeze-Type Declaration
5.2.10 Type Restrictions
5.2.11 Type Style Recommendations
5.3 Type Inference
5.3.1 Variable Type Inference
5.3.2 Local Function Type Inference
5.3.3 Global Function Type Inference
5.3.4 Operation Specific Type Inference
5.3.5 Dynamic Type Inference
5.3.6 Type Check Optimization
5.4 Source Optimization
5.4.1 Let Optimization
5.4.2 Constant Folding
5.4.3 Unused Expression Elimination
5.4.4 Control Optimization
5.4.5 Unreachable Code Deletion
5.4.6 Multiple Values Optimization
5.4.7 Source to Source Transformation
5.4.8 Style Recommendations
5.5 Tail Recursion
5.5.1 Tail Recursion Exceptions
5.6 Local Call
Self-Recursive Calls
5.6.2 Let Calls
5.6.3 Closures
5.6.4 Local Tail Recursion
5.6.5 Return Values
5.7 Block Compilation
5.7.1 Block Compilation Semantics
5.7.2 Block Compilation Declarations
5.7.3 Compiler Arguments
5.7.4 Practical Difficulties
5.7.5 Context Declarations
5.7.6 Context Declaration Example
5.8 Inline Expansion
5.8.1 Inline Expansion Recording
Semi-Inline Expansion
The Maybe-Inline Declaration
5.9 Byte Coded Compilation
5.10 Object Representation
5.10.1 Think Before You Use a List
5.10.2 Structure Representation
5.10.3 Arrays
5.10.4 Vectors
Bit-Vectors
5.10.6 Hashtables
5.11 Numbers
5.11.1 Descriptors
Non-Descriptor Representations
5.11.3 Variables
5.11.4 Generic Arithmetic
5.11.5 Fixnums
5.11.6 Word Integers
5.11.7 Floating Point Efficiency
5.11.8 Specialized Arrays
5.11.9 Specialized Structure Slots
5.11.10 Interactions With Local Call
5.11.11 Representation of Characters
5.12 General Efficiency Hints
5.12.1 Compile Your Code
5.12.2 Avoid Unnecessary Consing
5.12.3 Complex Argument Syntax
5.12.4 Mapping and Iteration
5.12.5 Trace Files and Disassembly
5.13 Efficiency Notes
5.13.1 Type Uncertainty
5.13.2 Efficiency Notes and Type Checking
5.13.3 Representation Efficiency Notes
5.13.4 Verbosity Control
5.14 Profiling
5.14.1 Profile Interface
5.14.2 Profiling Techniques
5.14.3 Nested or Recursive Calls
5.14.4 Clock resolution
5.14.5 Profiling overhead
5.14.6 Additional Timing Utilities
5.14.7 A Note on Timing
5.14.8 Benchmarking Techniques
Raymond Toy
Mon Jul 14 09:11:27 EDT 1997