Self-adjusting binary search trees
Journal of the ACM (JACM)
Two Access Methods Using Compact Binary Trees
IEEE Transactions on Software Engineering
Data structures: an advanced approach using C
Data structures: an advanced approach using C
Evaluating Associativity in CPU Caches
IEEE Transactions on Computers
Variable-depth trie index optimization: theory and experimental results
ACM Transactions on Database Systems (TODS)
Skip lists: a probabilistic alternative to balanced trees
Communications of the ACM
Handbook of algorithms and data structures: in Pascal and C (2nd ed.)
Handbook of algorithms and data structures: in Pascal and C (2nd ed.)
ASPLOS IV Proceedings of the fourth international conference on Architectural support for programming languages and operating systems
Performance comparison of extendible hashing and linear hashing techniques
ACM SIGSMALL/PC Notes
An effective on-chip preloading scheme to reduce data access penalty
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Stride directed prefetching in scalar processors
MICRO 25 Proceedings of the 25th annual international symposium on Microarchitecture
Balanced scheduling: instruction scheduling when memory latency is uncertain
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
An evaluation of self-adjusting binary search tree techniques
Software—Practice & Experience
Managing pages in shared virtual memory systems: getting the compiler into the game
ICS '93 Proceedings of the 7th international conference on Supercomputing
Compiler optimizations for improving data locality
ASPLOS VI Proceedings of the sixth international conference on Architectural support for programming languages and operating systems
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Overview of the second text retrieval conference (TREC-2)
TREC-2 Proceedings of the second conference on Text retrieval conference
Tolerating latency through software-controlled data prefetching
Tolerating latency through software-controlled data prefetching
Reducing TLB and memory overhead using online superpage promotion
ISCA '95 Proceedings of the 22nd annual international symposium on Computer architecture
SPAID: software prefetching in pointer- and call-intensive environments
Proceedings of the 28th annual international symposium on Microarchitecture
Memory bandwidth limitations of future microprocessors
ISCA '96 Proceedings of the 23rd annual international symposium on Computer architecture
A super scalar sort algorithm for RISC processors
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
The influence of caches on the performance of heaps
Journal of Experimental Algorithmics (JEA)
Compiler-based prefetching for recursive data structures
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
Improving data cache performance by pre-executing instructions under a cache miss
ICS '97 Proceedings of the 11th international conference on Supercomputing
Prefetching using Markov predictors
Proceedings of the 24th annual international symposium on Computer architecture
Randomized binary search trees
Journal of the ACM (JACM)
Data transformations for eliminating conflict misses
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The art of computer programming, volume 3: (2nd ed.) sorting and searching
Advanced compiler design and implementation
Advanced compiler design and implementation
Dependence based prefetching for linked data structures
Proceedings of the eighth international conference on Architectural support for programming languages and operating systems
Cache-conscious data placement
Proceedings of the eighth international conference on Architectural support for programming languages and operating systems
Cache conscious programming in undergraduate computer science
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
Effective jump-pointer prefetching for linked data structures
ISCA '99 Proceedings of the 26th annual international symposium on Computer architecture
Cache-conscious structure layout
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Cache-conscious structure definition
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
The string B-tree: a new data structure for string search in external memory and its applications
Journal of the ACM (JACM)
Fast algorithms for sorting and searching strings
SODA '97 Proceedings of the eighth annual ACM-SIAM symposium on Discrete algorithms
The analysis of hybrid trie structures
Proceedings of the ninth annual ACM-SIAM symposium on Discrete algorithms
Performance analysis of linear hashing with partial expansions
ACM Transactions on Database Systems (TODS)
Heuristics for trie index minimization
ACM Transactions on Database Systems (TODS)
PATRICIA—Practical Algorithm To Retrieve Information Coded in Alphanumeric
Journal of the ACM (JACM)
A Space-Economical Suffix Tree Construction Algorithm
Journal of the ACM (JACM)
Hashing Schemes for Extendible Arrays
Journal of the ACM (JACM)
Analysis of the Search Performance of Coalesced Hashing
Journal of the ACM (JACM)
Techniques for collision resolution in hash tables with open addressing
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Mining frequent patterns without candidate generation
SIGMOD '00 Proceedings of the 2000 ACM SIGMOD international conference on Management of data
Making B+- trees cache conscious in main memory
SIGMOD '00 Proceedings of the 2000 ACM SIGMOD international conference on Management of data
Identifier Search Mechanisms: A Survey and Generalized Model
ACM Computing Surveys (CSUR)
ACM Computing Surveys (CSUR)
A Cost Model for the Internal Organization of B+-Tree Nodes
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
Communications of the ACM
Use of tree structures for processing files
Communications of the ACM
An introduction to information processing language V
Communications of the ACM
Communications of the ACM
ICS '01 Proceedings of the 15th international conference on Supercomputing
ISCA '01 Proceedings of the 28th annual international symposium on Computer architecture
Optimizing compilers for modern architectures: a dependence-based approach
Optimizing compilers for modern architectures: a dependence-based approach
Burst tries: a fast, efficient data structure for string keys
ACM Transactions on Information Systems (TOIS)
Cache-oblivious priority queue and graph algorithm applications
STOC '02 Proceedings of the thiry-fourth annual ACM symposium on Theory of computing
Self-adjusting trees in practice for large text collections
Software—Practice & Experience
Software caching vs. prefetching
Proceedings of the 3rd international symposium on Memory management
Algorithms in C: Parts 1-4, Fundamentals, Data Structures, Sorting, and Searching
Algorithms in C: Parts 1-4, Fundamentals, Data Structures, Sorting, and Searching
Efficient Memory Programming
In-memory hash tables for accumulating text vocabularies
Information Processing Letters
Cache oblivious search trees via binary trees of small height
SODA '02 Proceedings of the thirteenth annual ACM-SIAM symposium on Discrete algorithms
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Reconsidering custom memory allocation
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
IEEE Micro
Effective Hardware-Based Data Prefetching for High-Performance Processors
IEEE Transactions on Computers
Efficient Differential Timeslice Computation
IEEE Transactions on Knowledge and Data Engineering
Hash Joins and Hash Teams in Microsoft SQL Server
VLDB '98 Proceedings of the 24rd International Conference on Very Large Data Bases
Cache Conscious Indexing for Decision-Support in Main Memory
VLDB '99 Proceedings of the 25th International Conference on Very Large Data Bases
Adaptive Algorithms for Cache-Efficient Trie Search
ALENEX '99 Selected papers from the International Workshop on Algorithm Engineering and Experimentation
Optimised Predecessor Data Structures for Internal Memory
WAE '01 Proceedings of the 5th International Workshop on Algorithm Engineering
Virtual Cache Line: A New Technique to Improve Cache Exploitation for Recursive Data Structures
CC '99 Proceedings of the 8th International Conference on Compiler Construction, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS'99
Speculative Prefetching of Induction Pointers
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Efficient Tree Layout in a Multilevel Memory Hierarchy
ESA '02 Proceedings of the 10th Annual European Symposium on Algorithms
Performance in Practice of String Hashing Functions
Proceedings of the Fifth International Conference on Database Systems for Advanced Applications (DASFAA)
Pointer cache assisted prefetching
Proceedings of the 35th annual ACM/IEEE international symposium on Microarchitecture
FOCS '99 Proceedings of the 40th Annual Symposium on Foundations of Computer Science
FOCS '00 Proceedings of the 41st Annual Symposium on Foundations of Computer Science
Improving Cache Behavior of Dynamically Allocated Data Structures
PACT '98 Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques
A comparison of cache aware and cache oblivious static search trees using program instrumentation
Experimental algorithmics
Guided region prefetching: a cooperative hardware/software approach
Proceedings of the 30th annual international symposium on Computer architecture
Computer Architecture: A Quantitative Approach
Computer Architecture: A Quantitative Approach
Cache-conscious data structures: design and implementation
Cache-conscious data structures: design and implementation
The Cost of Cache-Oblivious Searching
FOCS '03 Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science
The Unabridged Pentium 4: IA32 Processor Genealogy
The Unabridged Pentium 4: IA32 Processor Genealogy
A locality-preserving cache-oblivious dynamic dictionary
Journal of Algorithms
Tolerating memory latency through push prefetching for pointer-intensive applications
ACM Transactions on Architecture and Code Optimization (TACO)
Automatic pool allocation: improving performance by controlling data structure layout in the heap
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Memory-side prefetching for linked data structures for processor-in-memory systems
Journal of Parallel and Distributed Computing
MEDEA '04 Proceedings of the 2004 workshop on MEmory performance: DEaling with Applications , systems and architecture
Cache-oblivious string dictionaries
SODA '06 Proceedings of the seventeenth annual ACM-SIAM symposium on Discrete algorithm
Dynamic memory optimization using pool allocation and prefetching
ACM SIGARCH Computer Architecture News - Special issue on the 2005 workshop on binary instrumentation and application
Intermediately executed code is the key to find refactorings that improve temporal data locality
Proceedings of the 3rd conference on Computing frontiers
Cache-conscious coallocation of hot data streams
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Cache-oblivious string B-trees
Proceedings of the twenty-fifth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Cache-conscious frequent pattern mining on modern and emerging processors
The VLDB Journal — The International Journal on Very Large Data Bases
Beginning C: From Novice to Professional
Beginning C: From Novice to Professional
Cache-efficient string sorting using copying
Journal of Experimental Algorithmics (JEA)
Cache-oblivious streaming B-trees
Proceedings of the nineteenth annual ACM symposium on Parallel algorithms and architectures
An experimental comparison of cache-oblivious and cache-conscious programs
Proceedings of the nineteenth annual ACM symposium on Parallel algorithms and architectures
HAT-trie: a cache-conscious trie-based data structure for strings
ACSC '07 Proceedings of the thirtieth Australasian conference on Computer science - Volume 62
File searching using variable length keys
IRE-AIEE-ACM '59 (Western) Papers presented at the the March 3-5, 1959, western joint computer conference
B-tries for disk-based string management
The VLDB Journal — The International Journal on Very Large Data Bases
Addressing for random-access storage
IBM Journal of Research and Development
Algorithms for memory hierarchies: advanced lectures
Algorithms for memory hierarchies: advanced lectures
Search data structures for skewed strings
WEA'03 Proceedings of the 2nd international conference on Experimental and efficient algorithms
Fast and compact hash tables for integer keys
ACSC '09 Proceedings of the Thirty-Second Australasian Conference on Computer Science - Volume 91
Engineering scalable, cache and space efficient tries for strings
The VLDB Journal — The International Journal on Very Large Data Bases
Lists revisited: cache conscious STL lists
WEA'06 Proceedings of the 5th international conference on Experimental Algorithms
Cache-Conscious collision resolution in string hash tables
SPIRE'05 Proceedings of the 12th international conference on String Processing and Information Retrieval
Hi-index | 0.00 |
A key decision when developing in-memory computing applications is choice of a mechanism to store and retrieve strings. The most efficient current data structures for this task are the hash table with move-to-front chains and the burst trie, both of which use linked lists as a substructure, and variants of binary search tree. These data structures are computationally efficient, but typical implementations use large numbers of nodes and pointers to manage strings, which is not efficient in use of cache. In this article, we explore two alternatives to the standard representation: the simple expedient of including the string in its node, and, for linked lists, the more drastic step of replacing each list of nodes by a contiguous array of characters. Our experiments show that, for large sets of strings, the improvement is dramatic. For hashing, in the best case the total space overhead is reduced to less than 1 bit per string. For the burst trie, over 300MB of strings can be stored in a total of under 200MB of memory with significantly improved search time. These results, on a variety of data sets, show that cache-friendly variants of fundamental data structures can yield remarkable gains in performance.