Results 1  10
of
373
Uniprocessor Garbage Collection Techniques
 SUBMITTED TO ACM COMPUTING SURVEYS
"... We survey basic garbage collection algorithms, and variations such as incremental and generational collection; we then discuss lowlevel implementation considerations and the relationships between storage management systems, languages, and compilers. Throughout, we attempt to present a uni ed view b ..."
Abstract

Cited by 449 (5 self)
 Add to MetaCart
We survey basic garbage collection algorithms, and variations such as incremental and generational collection; we then discuss lowlevel implementation considerations and the relationships between storage management systems, languages, and compilers. Throughout, we attempt to present a uni ed view based on abstract traversal strategies, addressing issues of conservatism, opportunism, and immediacy of reclamation; we also point outavariety of implementation details that are likely to have a significant impact on performance.
pattern matching algorithms
 In Proceedings of the 14th Annual IEEE Symposium on Switching and Automata Theory. IEEE
, 1972
"... In 1970, Knuth, Pratt, and Morris [1] showed how to do basic pattern matching in linear time. Related problems, such as those discussed in [4], have previously been solved by efficient but suboptimal algorithms. In this paper, we introduce an interesting data structure called a bitree. A linear t ..."
Abstract

Cited by 445 (0 self)
 Add to MetaCart
(Show Context)
In 1970, Knuth, Pratt, and Morris [1] showed how to do basic pattern matching in linear time. Related problems, such as those discussed in [4], have previously been solved by efficient but suboptimal algorithms. In this paper, we introduce an interesting data structure called a bitree. A linear time algorithm "for obtaining a compacted version of a bitree associated with a given string is presented. With this construction as the basic tool, we indicate how to solve several pattern matching problems, including some from [4], in linear time. I.
Tree visualization with Treemaps: A 2d spacefilling approach
 ACM Transactions on Graphics
, 1991
"... this paper deals with a twodimensional (2d) spacefilling approach in which each node is a rectangle whose area is proportional to some attribute such as node size. Research on relationships between 2d images and their representation in tree structures has focussed on node and link representation ..."
Abstract

Cited by 427 (25 self)
 Add to MetaCart
(Show Context)
this paper deals with a twodimensional (2d) spacefilling approach in which each node is a rectangle whose area is proportional to some attribute such as node size. Research on relationships between 2d images and their representation in tree structures has focussed on node and link representations of 2d images. This work includes quadtrees (Samet, 1989) and their variants which are important in image processing. The goal of quad trees is to provide a tree representation for storage compression and efficient operations on bitmapped images. XYtrees (Nagy & Seth, 1984) are a traditional tree representation of twodimensional layouts found in newspaper, magazine, or book pages. Related concepts include kd trees (Bentley and Freidman, 1979), which are often explained with the help of a
A PolynomialTime Approximation Algorithm for the Permanent of a Matrix with NonNegative Entries
 Journal of the ACM
, 2004
"... Abstract. We present a polynomialtime randomized algorithm for estimating the permanent of an arbitrary n ×n matrix with nonnegative entries. This algorithm—technically a “fullypolynomial randomized approximation scheme”—computes an approximation that is, with high probability, within arbitrarily ..."
Abstract

Cited by 316 (23 self)
 Add to MetaCart
Abstract. We present a polynomialtime randomized algorithm for estimating the permanent of an arbitrary n ×n matrix with nonnegative entries. This algorithm—technically a “fullypolynomial randomized approximation scheme”—computes an approximation that is, with high probability, within arbitrarily small specified relative error of the true value of the permanent. Categories and Subject Descriptors: F.2.2 [Analysis of algorithms and problem complexity]: Nonnumerical
Dynamic storage allocation: A survey and critical review
, 1995
"... Dynamic memory allocation has been a fundamental part of most computer systems since roughly 1960, and memory allocation is widely considered to be either a solved problem or an insoluble one. In this survey, we describe a variety of memory allocator designs and point out issues relevant to their de ..."
Abstract

Cited by 227 (6 self)
 Add to MetaCart
(Show Context)
Dynamic memory allocation has been a fundamental part of most computer systems since roughly 1960, and memory allocation is widely considered to be either a solved problem or an insoluble one. In this survey, we describe a variety of memory allocator designs and point out issues relevant to their design and evaluation. We then chronologically survey most of the literature on allocators between 1961 and 1995. (Scores of papers are discussed, in varying detail, and over 150 references are given.) We argue that allocator designs have been unduly restricted by an emphasis on mechanism, rather than policy, while the latter is more important; higherlevel strategic issues are still more important, but have not been given much attention. Most theoretical analyses and empirical allocator evaluations to date have relied on very strong assumptions of randomness and independence, but real program behavior exhibits important regularities that must be exploited if allocators are to perform well in practice.
Compacting Garbage Collection with Ambiguous Roots
, 1988
"... This paper introduces a copying garbage collection algorithm which is able to compact most of the accessible storage in the heap without having an explicitly defined set of pointers that contain the roots of all accessible storage. Using "hints " found in the processor’s registers and stac ..."
Abstract

Cited by 118 (3 self)
 Add to MetaCart
(Show Context)
This paper introduces a copying garbage collection algorithm which is able to compact most of the accessible storage in the heap without having an explicitly defined set of pointers that contain the roots of all accessible storage. Using "hints " found in the processor’s registers and stack, the algorithm is able to divide heap allocated objects into two groups: those that might be referenced by a pointer in the stack or registers, and those that are not. The objects which might be referenced are left in place, and the other objects are copied into a more compact representation. A Lisp compiler and runtime system which uses such a collector need not have complete control of the processor in order to force a certain discipline on the stack and registers. A Scheme implementation has been done for the Digital WRL Titan processor which uses a garbage collector based on this "mostly copying " algorithm. Like other languages for the Titan, it uses the Mahler intermediate language as its target. This simplifies the compiler and allows it to take advantage of the significant machine dependent optimizations provided by Mahler. The common intermediate language also simplifies callouts from Scheme programs to functions written in other languages and callbacks from functions in other languages. Measurements of the Scheme implementation show that the algorithm is efficient, as little unneeded storage is retained and only a very small fraction of the heap is left in place. Simple pointer manipulation protocols also mean that compiler support is not needed in order to correctly handle pointers. Thus it is reasonable to provide garbage collected storage in languages such as C. A collector written in C which uses this algorithm is included in the Appendix. i A further problem is the occasional difficulty of determining exactly what Lists are not garbage at any given stage; if the programmer has been using any nonstandard techniques or keeping any pointer values in unusual places, chances are good that the garbage collector will go awry. Knuth, Volume I 1.
AverageCase Analysis of Algorithms and Data Structures
, 1990
"... This report is a contributed chapter to the Handbook of Theoretical Computer Science (NorthHolland, 1990). Its aim is to describe the main mathematical methods and applications in the averagecase analysis of algorithms and data structures. It comprises two parts: First, we present basic combinato ..."
Abstract

Cited by 100 (9 self)
 Add to MetaCart
This report is a contributed chapter to the Handbook of Theoretical Computer Science (NorthHolland, 1990). Its aim is to describe the main mathematical methods and applications in the averagecase analysis of algorithms and data structures. It comprises two parts: First, we present basic combinatorial enumerations based on symbolic methods and asymptotic methods with emphasis on complex analysis techniques (such as singularity analysis, saddle point, Mellin transforms). Next, we show how to apply these general methods to the analysis of sorting, searching, tree data structures, hashing, and dynamic algorithms. The emphasis is on algorithms for which exact "analytic models" can be derived.
The Memory Fragmentation Problem: Solved
 Proceedings of the First International Symposium on Memory Management, ACM
, 1998
"... We show that for 8 real and varied C and C++ programs, several conventional dynamic storage allocators provide nearzero fragmentation, once we account for overheads due to implementation details such as headers, alignment, etc. This substantially strengthens our previous results showing that the mem ..."
Abstract

Cited by 81 (1 self)
 Add to MetaCart
(Show Context)
We show that for 8 real and varied C and C++ programs, several conventional dynamic storage allocators provide nearzero fragmentation, once we account for overheads due to implementation details such as headers, alignment, etc. This substantially strengthens our previous results showing that the memory fragmentation problem has generally been misunderstood, and that good allocator policies can provide good memory usage for most programs. The new results indicate that for most programs, excellent allocator policies are readily available, and efficiency of implementation is the major challenge. While we believe that our experimental results are stateoftheart and our methodology is superior to most previous work, more work should be done to identify and study unusual problematic program behaviors not represented in our sample. 1
Optimizations for Dynamic Inverted Index Maintenance
, 1990
"... For freetext search over rapidly evolving corpora, dynamic update of inverted indices is a basic requirement. Btrees are an effective tool in implementing such indices. The Zipfian distribution of postings suggests space and time optimizations unique to this task. In particular, we present two nov ..."
Abstract

Cited by 81 (2 self)
 Add to MetaCart
For freetext search over rapidly evolving corpora, dynamic update of inverted indices is a basic requirement. Btrees are an effective tool in implementing such indices. The Zipfian distribution of postings suggests space and time optimizations unique to this task. In particular, we present two novel optimizations, merge update, which performs better than straight forward block update, and pulsing which significantly reduces space requirements without sacrificing performance. Inverted Indices Most standard freetext search methods in Information Retrieval (IR) can be implemented efficiently through the use of an inverted index. These include standard boolean, extended boolean, proximity, and relevance search algorithms. [7] An inverted index is a data structure that maps a word, or atomic search item, to the set of documents, or set of indexed units, that contain that word  its postings. An individual posting may be a binary indication of the presence of that word in a document, ...