Авторизация
Поиск по указателям
Bentley J. — Writing efficient programs
Обсудите книгу на научном форуме
Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Название: Writing efficient programs
Автор: Bentley J.
Аннотация: Bentley has the right idea when he states that you first write a correct, understandable and maintainable program, and then if it is not fast enough, modify it to improve the efficiency. He is also correct in pointing out that with this approach, modifications to improve efficiency, while not altering the correctness of the program, tend to reduce the clarity and maintainability of the code. However, he does miss one important point, which in his defense, is to a large extent due to the date of original publication.
With the availability of modern tools and advances in software design, it is now possible to create programs where the efficiency of the code can be part of the design. Changes in the design made to improve the efficiency can increase the maintainability and reduces the need for final alterations that lower the clarity and portability.
Язык:
Рубрика: Computer science /Алгоритмы /
Статус предметного указателя: Готов указатель с номерами страниц
ed2k: ed2k stats
Год издания: 1982
Количество страниц: 170
Добавлена в каталог: 10.11.2005
Операции: Положить на полку |
Скопировать ссылку для форума | Скопировать ID
Предметный указатель
Abstract data types 76
Ada language 67
Aho, A.V. xiv xv 4 35 44 83 84 88 114 115 116 118 121 123 124 127 131 146
Algorithms xi xiv 4 29 35 108 131
Algorithms, analysis 16 20 29 115 119 120 123 138
Algorithms, selection 114 122 130
Arrays see "Data structures"
Assembly language 5 9 24 27 29 36 48 58 62 66 72 131 132 141
Ast, M. xvi
Auslander, M.A. 80
Baase, S. 35
Backfiring 43 46 49 52 62 65 68 88 111
BASIC language 8 49 62 99 102
Baskett, F. 5 52 62
Beeler, M. 85
Bentley, J.L. 11 29 35 71 80
Bergeron, R.D. 32
Binary search see "Searching"
Bird, R.S. 41 80
bit manipulation 41 45 46 71 77 83 85 86
Bliss language 92 98
Boolean variable elimination 73
Brailsford, D.F. 33
Branch removal see "Removing unconditional branches"
Branch table 72
Brooks, F.P., Jr. 2 4 5 31 34 35 45 47 147
Bugs 37 52 54 84 111 116
Bulterman, H.R. 32
Burstall, R.M. 7 80
C language 54 92 138
Caching 37 42 49 50 76 98 122
Cattell, R.G. 42 146
Chandy, K.M. 5 134
Chansler, R.J. xvi 95
Code motion out of loops 20 51 64 106 128
Code simplification 48 60 65 79 104
Coffman, E.G., Jr. 99
Collapsing procedure hierarchies 20 64 75 83 106 118
Combining tests 23 52 65 87 118
Common subexpression elimination 16 84 106 124 127
Compile-time initialization 82 106
Compilers xi xv 2 4 9 13 25 28 32 34 36 37 46 47 49 51 52 54 55 62 67 81 82 83 84 88 90 92 101 127 134 135
Computer center performance 8 34
Control Data Corporation 7600 computer 81
Conway, R.W. 1
coroutines 79
Cost models 99 141
Darlington, J. 7 80
Data structure augmentation 22 39 49
Data structures xi xiv 4 29 35 39 108
Data structures, arrays 13 46 53 55 85 86
Data structures, hash tables 54 87
Data structures, incremental 83
Data structures, linked lists 18 49 54 59 60 62 85 86
Data structures, matrices 86 99
Data structures, selection 18 130
Data structures, strings 86 97
Data structures, trees 54 61 71 86
Deo, N. 35 85
Design levels xi 3 9 11 28 29 34 38 108
Deutsch, L.P. xv 42 146
Digital Equipment Corporation PDP-10 computer 11 73 89 98 129 136
Digital Equipment Corporation PDP-11 computer 92 99 101
Digital Equipment Corporation PDP-8 computer 73
Documentation 28 109
Dongarra, J.J. 58 98
early binding 40 51 72 75 76 82 84 105
Efficiency experts 134
Efficiency, hardware xi 5 42 78 85 108
Efficiency, importance of 1
Efficiency, input/output 46 84 88 96 103
Efficiency, space 30 45 47 79 132
Efficiency, system xi 2 8 36 81 108 133 134
Efficiency, system-dependent 21 24 28 55 62 87 89 132
Engineering techniques xii
Exploit algebraic identities 17 21 66 82 127 128 142
Exploit common cases 37 42 76 106 128
Exploit word parallelism 41 71 85 86
Faust, M.G. 71
Feign, D.A. 7 36
Feldman, S. 41 46 145 146 151
Finite state machines 47
Finkel, R.A. 54 69 80
Fitch, G.P. 34
Flon, L. 33 47 99
FORTRAN language 2 8 9 33 46 47 62 65 76 82 88
Foxley, E. 33
Frank, E.H. xvi
Friedman, J.H. 29 80
Fuller, S.H. 5
Games 41 54 71 86
Garbage collection see "Storage allocation"
Gardner, M. 86
Goodman, S.E. 7 35
Gosling, J.A. 99
Gosper, R.W. 85
Gries, D. 1
Gunther, F.J. 8 102
Hacks xii
Hardware see "Efficiency"
Harriman, D.C. 7 80
hash tables see "Data structures"
Hedetniemi, S.T. 7 35
Heindel, L.E. 75
Hewlett — Packard HP-1000 computer 138
Hibbard, C. xv
Hilfinger, P.N. 33 47 99
Hinds, A.R. 58 98
hints 40
Hoare, C.A.R. 115
Hopcroft, J.E. xiv 35 114 115 116 118 121 123 124 127 131
Horowitz, E. 35 86
Hot spots see "Inner loops"
IBM 650 computer 47
IBM System/360—370 computer 2 9 24 32 45 62 70 81 85 97 141
Incremental algorithms 83
Induction variables 83
Inner loops 26 33 105 107
Insertion sort see "Sorting"
interpreters 47 50 73 78 88
Inventor's paradox 79
Jackson, M.A. 47 79
Jalics, P.J. 8 42 76 146
Jefferson, D.R. 84 151
Jensen, K. 152
Johnson, S.C. xv 83 111
Jump table 72
Kernighan, B.W. xv 8 31 33 44 47 65 72 76 103 104 146 149
Kibler, D.F. 7 80
Knuth, D.E. 8 9 16 26 32 33 34 35 39 40 42 46 47 50 54 58 61 62 63 65 67 71 72 74 79 80 83 84 85 86 88 90 105 106 107 113 114 120 121 123 127 129 131 132 141 142 148 151
Kreitzberg, C.S. 8
Kulsrud, H.E. 81 151
Laird, J.E. 46 82 146 151
Lampson, B.W. 40
Lau, R.L. xvi
Lawson, H.W., Jr. 1
Lazy evaluation 43 50 106
Leverett, B. xv 101
Lewis, H. 11 35
Lewis, J. 8
Lexical analyzers 55
Linked lists see "Data structures"
Loop fusion 63 84
Loop jamming see "Loop fusion"
Loop unrolling 56 66 77 128 144
Loveman, D.B. 7
macros 76
Main loops see "Inner loops"
Majemik, J. xvi 93 94 95
Mander, K.C. 33
Matwin, S. 33
McCracken, D.D. 1 109
McCreight, E.M. xv 86 87
McDermott, J.D. xv
McFarland, M.C. 108
McIlroy, M.D. xv 34
McKellar, A.C. 99
McNair, T.J. xiii
Michaud, R.A. xvi
Missala, M. 33
money xi 1 2 3 9 137
Monitoring see "Profiling"
Mont-Reynaud, B. 9 59
Moon, D.A. 73 88 149
Morgan, D.J. 33
Morris, R. 45
Moving code see "Code motion out of loops"
Multiple-pass algorithms 79 88
Neighbors, J.M. 7 80
Nelson, B.J. 5 7
Neuhold, E.J. 1
Newcomer, J.M. xv
Newell, A. xv 3 5 30 76
Nievergelt, J. 33 35 85
Nix, R. 71
Noyce, W.B. 8
Operating system. xi xv 5 78 79
overlaying 20 46
Packing 45 48 50 106
Paige, R. 83
Pairing computation 84
Papadimitriou, C.H. 11 35
Parallelism 80 143 144
Pascal language xiv 13 25 33 34 41 46 70 72 82 90 138 152
Performance evaluation 101
personal computers xiv 3 8 22 40 49 57 105 106
Peterson, J.L. 31 41 42 45 54 57 72 82 145
Pike, R. 78 79 150
Plattner, B. 33
Plauger, P.J. 8 31 33 47 65 72 76 103 104
Precompute logical functions 41 72 106
premature optimization see "Unwise optimization"
Preparata, F.P. 71
Problem simplification 104
profiling 32 37 38 49 76 77 106 107 108 118 136
Program measurements see "Profiling"
Program transformations 7 26
Program verifications xiii xv 47 88
Program: Assembly inner loop 142
Program: Binary search 123
Program: Boolean variable example 73
Program: Character recognizer 70 72
Program: Fibonacci numbers 41 43 59
Program: Insertion in a linked list 60
Program: Insertion sort 63 93 95
Program: Pascal example 152
Program: Quicksort 116
Program: Scale elements of an array 52
Program: Sequential search in a sorted array 55 57
Program: Sequential search in an unsorted array 53 74
Program: Sum a vector 57
Program: Test sum of an array 68
Program: Traveling salesman problem 14
Programming methodologies xii 2 3 31 36 76 108 133 134
Purdom, P.W., Jr. 75
Quicksort see "Sorting"
Recursion 41 79 115 119
Reddy, D.R. 3 5 30
Reghbati, H.K. 45
Registers 94 98 144
Reid, B.K. xvi 9
Reingold, E.M. 35 85
Reisel, H. 88
Relentless suspicion 105
Removing unconditional branches 66
Reordering tests 69 72 126
Rich, E.A. xvi
Ritchie, D.M. 76 79 150
Rolling out loops see "Loop unrolling"
Russell, R.D. 81
Sahni, S. 35 86
Satterthwaite, E.H. 32
Sauer, C.H. 5 134
Saxe, J.B. 11
Schaeffer, M. 4
Scheifler, R.W. 75
Scherlis, W.L. 7 78
Schroeppel, R. 85
Searching 35 40 42 43 44 49 53 54 55 58 62 73 79 86 121
Searching, binary search 122
Searching, sequential search 42 53 55 122
Sedgewick, R. 9 58 63 80 81 121 151
Sentinels 23 40 53 54 56 59 67 69 118
Shaw, M. 4 33 47 77 99 100 101 150
Shneiderman, B. 8
Short-circuiting monotone functions 21 67
Sites, R.L. 32 34
Smith, C.U. 4 8 31 133 134
Smith, P. 81 151
Software engineering xi xiii xv
Sorting 48 54 58 61 63 71 79 81 85 113
Sorting, Insertion Sort 63 114
Sorting, Quicksort 115
Speedups, huge 5 7 8 26 42 43 46 52 72 82 95 96 99 121 127 131
Spelling correction 42 71
Sproull, R.F. xv 7 40 55 56 83 87 147 148
Stanat, D.F. xv 67 69
Standish, T.A. 7 35 39 40 80
Stankovich, J.A. 75
Steele, G.L., Jr. xv xvi 80 83 98 129 130 131 143
Storage allocation 37 40 42 105
Store precomputed results 40 49 72 73 85 105
Strength reduction 67 83
strings see "Data structures"
Strohecker, C.A. xvi
Strong, H.R. 80
Supercomputers 22 58 81 98
system software xi xv 5
system structure 3 97
Szymanski, T.G. 81 151
Tail recursion 80 125
Thompson, K. 79
Transfer-driven loop unrolling 59 86
Transformations on recursive procedures 80 119 125
Traveling salesman problem 11 141
Trees see "Data structures"
Trivial assignments 59
Trosky, W.J. xvi 138
Ullman, J.D. xiv 4 35 83 84 88 114 115 116 118 121 123 124 127 131
Unconditional branch removal 62 90
Unrolling loops see "Loop unrolling"
Unwise optimizations, excessive 21 111
Unwise optimizations, premature 1 31 37 54 104 124
Van Wyk, C.J. xv 9 36 37 42 78 146 150
Vyssotsky, V.A. 3 37
Waite, W.M. 4
Waldbaum, G. 8 34 112
War stories xiii 36 41 42 44 45 46 47 54 55 56 77 78 82 84 99 106
Warnings xv 7 43 62 64 67 81 83 84 107 109 111 135
Weinberg, G.M. 31
Weinberger, P.J. 71 85 149 151
Wichman, B.A. 101
Wilhoyte, W.L. xvi
Wirth, N. 152
Writing procedures in line 64 75 118
Wulf, W.A. xv xvi 4 33 47 84 90 91 92 95 98 99
Реклама