Results 1 - 10
of
13
Query optimization in database systems
- ACM Computing Surveys
, 1984
"... Efficient methods of processing unanticipated queries are a crucial prerequisite for the success of generalized database management systems. A wide variety of approaches to improve the performance of query evaluation algorithms have been proposed: logic-based and semantic transformations, fast imple ..."
Abstract
-
Cited by 194 (0 self)
- Add to MetaCart
Efficient methods of processing unanticipated queries are a crucial prerequisite for the success of generalized database management systems. A wide variety of approaches to improve the performance of query evaluation algorithms have been proposed: logic-based and semantic transformations, fast implementations of basic operations, and combinatorial or heuristic algorithms for generating alternative access plans and choosing among them. These methods are presented in the framework of a general query evaluation procedure using the relational calculus representation of queries. In addition, nonstandard query optimization issues such as higher level query evaluation, query optimization in distributed databases, and use of database machines are addressed. The focus, however, is on query optimization in centralized database systems.
Parsing and Compiling Using Prolog
- ACM Transactions on Programming Languages and Systems
, 1987
"... This paper presents the material needed for exposing the reader to the advantages of using Prolog as a language for describing succinctly most of the algorithms needed in prototyping and implementing compilers or producing tools that facilitate this task. The available published material on the subj ..."
Abstract
-
Cited by 26 (2 self)
- Add to MetaCart
This paper presents the material needed for exposing the reader to the advantages of using Prolog as a language for describing succinctly most of the algorithms needed in prototyping and implementing compilers or producing tools that facilitate this task. The available published material on the subject describes one particular approach in implementing compilers using Prolog. It consists of coupling actions to recursive descent parsers to produce syntax-trees which are subsequently utilized in guiding the generation of assembly language code. Although this remains a worthwhile approach, there is a host of possibilities for Prolog usage in compiler construction. The primary aim of this paper is to demonstrate the use of Prolog in parsing and compiling. A second, but equally important, goal of this paper is to show that Prolog is a labor-saving tool in prototyping and implementing many non-numerical algorithms which arise in compiling, and whose description using Prolog is not available in the literature. The paper discusses the use of unification and nondeterminism in compiler writing as well as means to bypass these (costly) features when they are deemed unnecessary. Topics covered include bottom-up and top-down parsers, syntax-directed translation, grammar properties, parser generation, code generation, and optimixations. Newly proposed features that are useful in compiler construction are also discussed. A knowledge of Prolog is assumed.
Code Optimizers and Register Organizations for Vector Architectures
, 1992
"... A major challenge facing computer architects today is designing cost-effective hardware that executes multiple operations simultaneously. The goal of such designs is to improve performance by taking advantage of fine-grain parallelism. In this dissertation, I study vector architectures, the oldest o ..."
Abstract
-
Cited by 19 (0 self)
- Add to MetaCart
A major challenge facing computer architects today is designing cost-effective hardware that executes multiple operations simultaneously. The goal of such designs is to improve performance by taking advantage of fine-grain parallelism. In this dissertation, I study vector architectures, the oldest of several processor designs that support fine-grain parallelism. Because implementing a cost-effective processor that performs well requires studying not only the design of processors but also the design of algorithms for compilers, this dissertation encompasses aspects of both hardware and software design. In the first half of this dissertation, I demonstrate that a vector architecture is a cost-effective processor that supports fine-grain parallelism. I show that implementing a vector architecture is no more costly than implementing a superscalar architecture, which is currently popular among designers of VLSI microprocessors. I then show that programs that are rich in parallelism tend als...
Loop optimization for aggregate array computations
"... An aggregate array computation is a loop that computes accumulated quantities over array elements. Such computations are common in programs that use arrays, and the array elements involved in such computations often overlap, especially across iterations of loops, resulting in signi cant redundancy ..."
Abstract
-
Cited by 14 (7 self)
- Add to MetaCart
An aggregate array computation is a loop that computes accumulated quantities over array elements. Such computations are common in programs that use arrays, and the array elements involved in such computations often overlap, especially across iterations of loops, resulting in signi cant redundancy in the overall computation. This paper presents a method and algorithms that eliminate such overlapping aggregate array redundancies and shows both analytical and experimental performance improvements. The method is based on incrementalization, i.e., updating the values of aggregate array computations from iteration to iteration rather than computing them from scratch in each iteration. This involves maintaining additional information not maintained in the original program. We reduce various analysis problems to solving inequality constraints on loop variables and array subscripts, and we apply results from work on array data dependence analysis. Incrementalizing aggregate array computations produces drastic program speedup compared to previous optimizations. Previous methods for loop optimizations of arrays do not perform incrementalization, and previous techniques for loop incrementalization do not handle arrays.
Compiled Instruction Set Simulation
, 1991
"... This paper discusses a simple method to reduce the execution time of instruction set simulators greatly. Although the method introduced here can be of significant utility, interpreted simulation techniques have alternative strengths, particularly when used for the detailed analysis of data and instr ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
This paper discusses a simple method to reduce the execution time of instruction set simulators greatly. Although the method introduced here can be of significant utility, interpreted simulation techniques have alternative strengths, particularly when used for the detailed analysis of data and instruction path utiliz- ation
Principled Strength Reduction
- Algorithmic Languages and Calculi
, 1996
"... This paper presents a principled approach for optimizing iterative (or recursive) programs. The approach formulates a loop body as a function f and a change operation \Phi, incrementalizes f with respect to \Phi, and adopts an incrementalized loop body to form a new loop that is more efficient. Thre ..."
Abstract
-
Cited by 10 (9 self)
- Add to MetaCart
This paper presents a principled approach for optimizing iterative (or recursive) programs. The approach formulates a loop body as a function f and a change operation \Phi, incrementalizes f with respect to \Phi, and adopts an incrementalized loop body to form a new loop that is more efficient. Three general optimizations are performed as part of the adoption; they systematically handle initializations, termination conditions, and final return values on exits of loops. These optimizations are either omitted, or done in implicit, limited, or ad hoc ways in previous methods. The new approach generalizes classical loop optimization techniques, notably strength reduction, in optimizing compilers, and it unifies and systematizes various optimization strategies in transformational programming. Such principled strength reduction performs drastic program efficiency improvement via incrementalization and appreciably reduces code size via associated optimizations. We give examples where this app...
Reverse Engineering: Algorithms for Program Graph Production
, 1991
"... this paper, two programs will be considered identical when their respective P,B,S and E sets are equal ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
this paper, two programs will be considered identical when their respective P,B,S and E sets are equal
On parsing two-level grammars
- Acta Informatica
, 1980
"... Summary. Making use of the fact that two-level grammars (TLGs) may be thought of as finite specification of context-free grammars (CFGs) with "infinite " sets of productions, known techniques for parsing CFGs are applied to TLGs by first specifying a canonical CFG G '- called skeleton gram ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Summary. Making use of the fact that two-level grammars (TLGs) may be thought of as finite specification of context-free grammars (CFGs) with "infinite " sets of productions, known techniques for parsing CFGs are applied to TLGs by first specifying a canonical CFG G '- called skeleton grammar- obtained from the "cross-reference " of the TLG G. Under very natural restrictions it can be shown that for these grammar pairs (G, G') there exists a 1- 1 correspondence between leftmost derivations in G and leftmost derivations in G'. With these results a straightforward parsing algorithm for restricted TLGs is given. Two-level grammars (van Wijngaarden grammars, W-Grammars, 2 VWG's) have been introduced by A. van Wijngaarden in 1965 [22] for the definition of ALGOL 68 [23, 241. Major results concerning their formal properties were obtained by Sintzoff [17], Baker [4], Greibach [9] and Deussen [6, 71. A rather
A coroutine approach to parsing
- ACM Trans. Program. Lang. Syst
, 1980
"... A method is presented for parsing syntactic constructs that are permitted to appear independently anywhere in a program. Some examples include comments, macros, and constructs for conditional compilation. Each such construct is defined by its own grammar and parsed by a separate coroutine. The corou ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
A method is presented for parsing syntactic constructs that are permitted to appear independently anywhere in a program. Some examples include comments, macros, and constructs for conditional compilation. Each such construct is defined by its own grammar and parsed by a separate coroutine. The coroutine model of parsing allows the program text to be parsed in one pass despite the syntactic inconsistencies among the program text and the additional constructs. The usefulness of the model is demonstrated by showing how a production language parsing method is extended to handle multiple syntax specifications. The implementation of conditional compilation by carrying along two parses in a coroutine manner is also given. The utility of the model is further demonstrated by showing its adaptation to a recursive descent parser.
Shape Recognition Using
"... This paper will appear in the 1979 Pattern Recognition and Image Processing Conference to be held in C.hicago, IL, August 6-8, 1979 ..."
Abstract
- Add to MetaCart
This paper will appear in the 1979 Pattern Recognition and Image Processing Conference to be held in C.hicago, IL, August 6-8, 1979

