CONTENTS iv
5.4.3 Unused Expression Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4.4 Control Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4.5 Unreachable Code Deletion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.4.6 Multiple Values Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.4.7 Source to Source Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.4.8 Style Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.5 Tail Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.5.1 Tail Recursion Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.6 Local Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.6.1 Self-Recursive Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6.2 Let Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6.3 Closures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.4 Local Tail Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.5 Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7 Block Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7.1 Block Compilation Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7.2 Block Compilation Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.7.3 Compiler Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.7.4 Practical Difficulties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.7.5 Context Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.7.6 Context Declaration Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.8 Inline Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.8.1 Inline Expansion Recording . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.8.2 Semi-Inline Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.8.3 The Maybe-Inline Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.9 Byte Coded Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.10 Object Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.10.1 Think Before You Use a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.10.2 Structure Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.10.3 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.10.4 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.10.5 Bit-Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.10.6 Hashtables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.11 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.11.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.11.2 Non-Descriptor Representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.11.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.11.4 Generic Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.11.5 Fixnums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.11.6 Word Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.11.7 Floating Point Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.11.8 Specialized Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.11.9 Specialized Structure Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.11.10 Interactions With Local Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.11.11 Representation of Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.12 General Efficiency Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.12.1 Compile Your Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.12.2 Avoid Unnecessary Consing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.12.3 Complex Argument Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.12.4 Mapping and Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.12.5 Trace Files and Disassembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.13 Efficiency Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.13.1 Type Uncertainty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.13.2 Efficiency Notes and Type Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.13.3 Representation Efficiency Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
评论0
最新资源