The VLDB Journal

, Volume 19, Issue 5, pp 633–660 | Cite as

Engineering scalable, cache and space efficient tries for strings

Regular Paper

Abstract

Storing and retrieving strings in main memory is a fundamental problem in computer science. The efficiency of string data structures used for this task is of paramount importance for applications such as in-memory databases, text-based search engines and dictionaries. The burst trie is a leading choice for such tasks, as it can provide fast sorted access to strings. The burst trie, however, uses linked lists as substructures which can result in poor use of CPU cache and main memory. Previous research addressed this issue by replacing linked lists with dynamic arrays forming a cache-conscious array burst trie. Though faster, this variant can incur high instruction costs which can hinder its efficiency. Thus, engineering a fast, compact, and scalable trie for strings remains an open problem. In this paper, we introduce a novel and practical solution that carefully combines a trie with a hash table, creating a variant of burst trie called HAT-trie. We provide a thorough experimental analysis which demonstrates that for large set of strings and on alternative computing architectures, the HAT-trie—and two novel variants engineered to achieve further space-efficiency—is currently the leading in-memory trie-based data structure offering rapid, compact, and scalable storage and retrieval of variable-length strings.

Keywords

Cache-conscious hash table Burst trie Strings In-memory data structures Judy trie Space-efficient Dynamic array Scalable 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Acharya, A., Zhu, H., Shen, K.: Adaptive algorithms for cache-efficient trie search. In: Proceedings of the ALENEX Workshop on Algorithm Engineering and Experiments, pp. 296–311. Baltimore, Maryland, United States (1999). Source code at http://www.cs.rochester.edu/~kshen
  2. 2.
    Aggarwal, A.: Software caching vs. prefetching. In: Proceedings of International Symposium on Memory Management, pp. 157–162. ACM Press, New York (2002)Google Scholar
  3. 3.
    Agrawal, R., Srikant, R.: Fast algorithms for mining association rules. In: Proceedings of International Conference on Very Large Databases, pp. 487–499. Morgan Kaufmann (1994)Google Scholar
  4. 4.
    Al-Suwaiyel M., Horowitz E.: Algorithms for trie compaction. ACM Trans. Database Syst. 9(2), 243–263 (1984)MATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Allen R., Kennedy K.: Optimizing Compilers for Modern Architectures. 1st edn. Morgan Kaufmann, San Francisco, California, United States (2001)Google Scholar
  6. 6.
    Aoe J., Morimoto K., Sato T.: An efficient implementation of trie structures. Softw. Pract. Exp. 22(9), 695–721 (1992)CrossRefGoogle Scholar
  7. 7.
    Aoe J., Morimoto K., Shishibori M., Park K.: A trie compaction algorithm for a large set of keys. IEEE Trans. Knowl. Data Eng. 8(3), 476–491 (1996)CrossRefGoogle Scholar
  8. 8.
    Arge, L., Bender, M.A., Demaine, E., Leiserson, C., Mehlhorn, K.: Abstracts collection. In: Cache-Oblivious and Cache-Aware Algorithms, no. 04301 in Dagstuhl Seminar Proceedings. Schloss Dagstuhl, Germany (2005)Google Scholar
  9. 9.
    Arge, L., Bender, M.A., Demaine, E.D., Holland-Minkley, B., Munro, J.I.: Cache-oblivious priority queue and graph algorithm applications. In: Proceedings of ACM Symposium on Theory of Computing, pp. 268–276. Montreal, Quebec, Canada (2002)Google Scholar
  10. 10.
    Arge, L., Brodal, G., Fagerberg, R.: Cache-oblivious data structures. In: Handbook on Data Structures and Applications, pp. 34–41. CRC Press (2005)Google Scholar
  11. 11.
    Askitis, N.: Efficient data structures for cache architectures. Ph.D. thesis, School of Computer Science and I.T, RMIT Univeristy Australia (2007). Tech. report: TR-08-5Google Scholar
  12. 12.
    Askitis, N.: Fast and compact hash tables for integer keys. In: Thirty-Second Australasian Computer Science Conference (ACSC 2009), vol. 91, pp. 101–110. Wellington, New Zealand (2009)Google Scholar
  13. 13.
    Askitis, N., Sinha, R.: HAT-Trie: A cache-conscious trie-based data structure for strings. In: Thirtieth Australasian Computer Science Conference (ACSC2007), pp. 97–105. Ballarat, Australia (2007)Google Scholar
  14. 14.
    Askitis, N., Zobel, J.: Cache-conscious collision resolution in string hash tables. In: Proceedings of SPIRE String Processing and Information Retrieval Symposium, pp. 91–102. Buenos Aires, Argentina (2005)Google Scholar
  15. 15.
    Askitis, N., Zobel, J.: B-tries for disk-based string management. In: International Journal on Very Large Databases, pp. 1–25 (2008). http://www.springerlink.com/content/x7545u2g85675u17
  16. 16.
    Bacon D.F., Granham S.L., Sharp O.J.: Compiler transformation for high-performance computing. ACM Comput. Surv. 26(4), 345–420 (1994)CrossRefGoogle Scholar
  17. 17.
    Badawy, A.A., Aggarwal, A., Yeung, D., Tseng, C.: The efficacy of software prefetching and locality optimizations on future memory systems. J. Instr. Lev. Parallelism 6(7) (2004)Google Scholar
  18. 18.
    Badr, G., Oommen, B.J.: On using conditional rotations and randomized heuristics for self-organizing ternary search tries. In: Proceedings of ACM Southeast Regional Conference, pp. 109–115. Kennesaw, Georgia, United States (2005)Google Scholar
  19. 19.
    Baer, J., Chen, T.: An effective on-chip preloading scheme to reduce data access penalty. In: Proceedings of ACM/IEEE Conference on Supercomputing, pp. 176–186. Albuquerque, New Mexico, United States (1991)Google Scholar
  20. 20.
    Baer J., Chen T.: Effective hardware-based data prefetching for high-performance processors. IEEE Trans. Comput. 44(5), 609–623 (1995)MATHCrossRefGoogle Scholar
  21. 21.
    Baskins, D.: A 10-minute description of how Judy arrays work and why they are so fast (2004) http://judy.sourceforge.net/
  22. 22.
    Bell T.C., Cleary J.G., Witten I.H.: Text Compression. 1st edn. Prentice-Hall, New Jersey, United States (1990)Google Scholar
  23. 23.
    Bender, M., Brodal, G.S., Fagerberg, R., Ge, D., He, S., Hu, H., Iacono, J., Lopez-Ortiz, A.: The cost of cache-oblivious searching. In: IEEE Symposium on the Foundations of Computer Science, pp. 271–282. Cambridge, Massachusetts, United States (2003)Google Scholar
  24. 24.
    Bender, M.A., Demaine, E.D., Farach-Colton, M.: Cache-oblivious b-trees. In: IEEE Symposium on the Foundations of Computer Science, pp. 399–409. IEEE Computer Society Press (2000)Google Scholar
  25. 25.
    Bender, M.A., Demaine, E.D., Farach-Colton, M.: Efficient tree layout in a multilevel memory hierarchy. In: Proceedings of European Symposium on Algorithms, pp. 165–173. Rome, Italy (2002)Google Scholar
  26. 26.
    Bender M.A., Duan Z., Iacono J., Wu J.: A locality-preserving cache-oblivious dynamic dictionary. J. Algorithms 53(2), 115–136 (2004)MATHCrossRefMathSciNetGoogle Scholar
  27. 27.
    Bender, M.A., Farach-Colton, M., Fineman, J.T., Fogel, Y.R., Kuszmaul, B.C., Nelson, J.: Cache-oblivious streaming B-trees. In: ACM Symposium on Parallel Algorithms and Architectures, pp. 81–92. San Diego, California, United States (2007)Google Scholar
  28. 28.
    Bender, M.A., Farach-Colton, M., Kuszmaul, B.C.: Cache-oblivious string B-trees. In: Proceedings of ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, pp. 233–242. Chicago, Illinois, United States (2006)Google Scholar
  29. 29.
    Bentley, J., Sedgewick, R.: Fast algorithms for sorting and searching strings. In: Proceedings of ACM SIAM Symposium on Discrete Algorithms, pp. 360–369. Society for Industrial and Applied Mathematics (1997)Google Scholar
  30. 30.
    Berg, S.G.: Cache prefetching. In: Tech Report UW-CSE. University of Washington (2002)Google Scholar
  31. 31.
    Berger, E.D., Zorn, B.G., McKinley, K.S.: Reconsidering custom memory allocation. In: Proceedings of ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, pp. 1–12. Seattle, Washington, United States (2002)Google Scholar
  32. 32.
    de la Briandais, R.: File searching using variable length keys. In: Proceedings of Western Joint Computer Conference, pp. 295–298. New York, United States (1959)Google Scholar
  33. 33.
    Brodal, G., Fagerberg, R.: Cache-oblivious string dictionaries. In: Proceedings of ACM SIAM Symposium on Discrete Algorithms, pp. 581–590. Miami, Florida, United States (2006)Google Scholar
  34. 34.
    Brodal, G.S., Fagerberg, R., Jacob, R.: Cache oblivious search trees via binary trees of small height. In: Proceedings of ACM SIAM Symposium on Discrete Algorithms, pp. 39–48. San Francisco, California, United States (2002)Google Scholar
  35. 35.
    Burger, D., Goodman, J.R., Kägi, A.: Memory bandwidth limitations of future microprocessors. In: Proceeidngs of International Symposium on Computer Architecture, pp. 78–89. Philadelphia, Pennsylvania, United States (1996)Google Scholar
  36. 36.
    Calder, B., Krintz, C., John, S., Austin, T.: Cache-conscious data placement. In: Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 139–149. San Jose, California, United States (1998)Google Scholar
  37. 37.
    Callahan, D., Kennedy, K., Porterfield, A.: Software prefetching. In: Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 40–52. Santa Clara, California, United States (1991)Google Scholar
  38. 38.
    Carr, S., McKinley, K.S., Tseng, C.: Compiler optimizations for improving data locality. In: Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 252–262. San Jose, California, United States (1994)Google Scholar
  39. 39.
    Chilimbi, T.M.: Cache-conscious data structures–design and implementation. Ph.D. thesis, Computer Sciences Department, University of Wisconsin-Madison (1999)Google Scholar
  40. 40.
    Chilimbi, T.M., Hill, M.D., Larus, J.R.: Cache-conscious structure layout. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 1–12. Atlanta, Georgia, United States (1999)Google Scholar
  41. 41.
    Chilimbi, T.M., Shaham, R.: Cache-conscious coallocation of hot data streams. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 252–262. Ottawa, Ontario, Canada (2006)Google Scholar
  42. 42.
    Clement, J., Flajolet, P., Vallee, B.: The analysis of hybrid trie structures. In: Proceedings of ACM SIAM Symposium on Discrete Algorithms, pp. 531–539. San Francisco, California, United States (1998)Google Scholar
  43. 43.
    Clement J., Flajolet P., Vallee B.: Dynamic sources in information theory: a general analysis of trie structures. Algorithmica 29(1/2), 307–369 (2001)MATHCrossRefMathSciNetGoogle Scholar
  44. 44.
    Collins, J., Sair, S., Calder, B., Tullsen, D.M.: Pointer cache assisted prefetching. In: Proceedings of Annual ACM/IEEE MICRO International Symposium on Microarchitecture, pp. 62–73. Istanbul, Turkey (2002)Google Scholar
  45. 45.
    Comer D.: Heuristics for trie index minimization. ACM Trans. Database Syst. 4(3), 383–395 (1979)CrossRefGoogle Scholar
  46. 46.
    Comer D.: Ubiquitous B-tree. ACM Comput. Surv. 11(2), 121–137 (1979)MATHCrossRefGoogle Scholar
  47. 47.
    Crescenzi, P., Grossi, R., Italiano, G.F.: Search data structures for skewed strings. In: Experimental and Efficient Algorithms: Second International Workshop, WEA, pp. 81–96. Ascona, Switzerland (2003)Google Scholar
  48. 48.
    Dongarra, J., London, K., Moore, S., Mucci, S., Terpstra, D.: Using PAPI for hardware performance monitoring on Linux systems. In: Proceedings of Conference on Linux Clusters: The HPC Revolution. Urbana, Illinois, United States (2001). http://icl.cs.utk.edu/papi/
  49. 49.
    Dundas, J., Mudge, T.: Improving data cache performance by pre-executing instruction under a cache miss. In: Proceedings of ACM/IEEE Conference on Supercomputing, pp. 176–186. Vienna, Austria (1997)Google Scholar
  50. 50.
    Flajolet P., Puech C.: Partial match retrieval of multimedia data. J. ACM 33(2), 371–407 (1986)CrossRefMathSciNetGoogle Scholar
  51. 51.
    Fredkin E.: Trie memory. Commun. ACM 3(9), 490–499 (1960)CrossRefGoogle Scholar
  52. 52.
    Frigo, M., Leiserson, C., Prokop, H., Ramachandran, S.: Cache-oblivious algorithms. In: IEEE Symposium on the Foundations of Computer Science, p. 285. New York City, New York, United States (1999)Google Scholar
  53. 53.
    Fritchie, S.L.: A study of Erlang ETS table implementations and performance. In: Proceedings of ACM SIGPLAN Workshop on Erlang, pp. 43–55. Uppsala, Sweden (2003)Google Scholar
  54. 54.
    Fu, J.W.C., Patel, J.H., Janssens, B.L.: Stride directed prefetching in scalar processors. In: Proceedings of Annual ACM/IEEE MICRO International Symposium on Microarchitecture, pp. 102–110. IEEE Computer Society Press (1992)Google Scholar
  55. 55.
    Fu J.W.C., Patel J.H., Janssens B.L.: Stride directed prefetching in scalar processors. SIGMICRO Newsl. 23(1–2), 102–110 (1992)CrossRefGoogle Scholar
  56. 56.
    Ghoting A., Buehrer G., Parthasarathy S., Kim D., Nguyen A., Chen Y., Dubey P.: Cache-conscious frequent pattern mining on modern and emerging processors. Int. J. Very Large Databases 16(1), 77–96 (2006)CrossRefGoogle Scholar
  57. 57.
    Gonnet G.H., Baeza-Yates R.: Handbook of Algorithms and Data Structures: in Pascal and C. 2nd edn. Addison-Wesley, Boston, Massachusetts, United States (1991)Google Scholar
  58. 58.
    Graefe, G., Bunker, R., Cooper, S.: Hash joins and hash teams in Microsoft SQL server. In: Gupta A., Shmueli O., Widom J. (eds.) Proceedings of International Conference on Very Large Databases, pp. 86–97. New York City, New York, United States (1998)Google Scholar
  59. 59.
    Granston, E.D., Wijshoff, H.A.G.: Managing pages in shared virtual memory systems: getting the compiler into the game. In: Proceedings of International Conference on Supercomputing, pp. 11–20. Tokyo, Japan (1993)Google Scholar
  60. 60.
    Hallberg, J., Palm, T., Brorsson, M.: Cache-conscious allocation of pointer-based data structures revisited with HW/SW prefetching. In: Second Annual Workshop on Duplicating, Deconstructing, and Debunking. San Diego, California, United States (2003)Google Scholar
  61. 61.
    Han, J., Pei, J., Yin, Y.: Mining frequent patterns without candidate generation. In: ACM SIGMOD International Conference on Management of Data, pp. 1–12. Dallas, Texas, United States (2000)Google Scholar
  62. 62.
    Harman D.: Overview of the second text retrieval conference (TREC-2). Inf. Process. Manag. 31(3), 271–289 (1995)CrossRefGoogle Scholar
  63. 63.
    Heinz S., Zobel J., Williams H.E.: Burst tries: a fast, efficient data structure for string keys. ACM Trans. Inf. Syst. 20(2), 192–223 (2002)CrossRefGoogle Scholar
  64. 64.
    Hewlett-Packard: Programming with Judy: C language Judy version 4.0. Tech. rep., HP Part Number: B6841-90001 (2001). http://docs.hp.com/en/B6841-90001/index.html
  65. 65.
    Hughes C.J., Adve S.V.: Memory-side prefetching for linked data structures for processor-in-memory systems. J. Parallel Distrib. Comput. 65(4), 448–463 (2005)MATHCrossRefGoogle Scholar
  66. 66.
    Joseph, D., Grunwald, D.: Prefetching using Markov predictors. In: Proceedings of International Symposium on Computer Architecture, pp. 252–263. Denver, Colorado, United States (1997)Google Scholar
  67. 67.
    Karlsson, M., Dahlgren, F., Stenstrom, P.: A prefetching technique for irregular accesses to linked data structures. In: Proceedings of Symposium on High-Performance Computer Architecture, pp. 206–217. Toulouse, France (2000)Google Scholar
  68. 68.
    Kerns, D.R., Eggers, S.J.: Balanced scheduling: instruction scheduling when memory latency is uncertain. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 278–289. Albuquerque, New Mexico, United States (1993)Google Scholar
  69. 69.
    Knessl, C., Szpankowski, W.: A note on the asymptotic behavior of the height in B-tries for B large. Electron. J. Comb. 7(R39) (2000)Google Scholar
  70. 70.
    Knuth D.E.: The Art of Computer Programming: Sorting and Searching, vol. 3. 2nd edn. Addison-Wesley, Longman, Reading, London (1998)Google Scholar
  71. 71.
    Kumar, P.: Cache oblivious algorithms. In: Algorithms for Memory Hierarchies, Lecture Notes in Computer Science, vol. 2625, pp. 193–212. Springer (2002)Google Scholar
  72. 72.
    Ladner, R.E., Fortna, R., Nguyen, B.: A comparison of cache aware and cache oblivious static search trees using program instrumentation. In: Experimental Algorithmics: From Algorithm Design to Robust and Efficient Software, pp. 78–92. New York City, New York, United States (2002)Google Scholar
  73. 73.
    Lattner, C., Adve, V.: Automatic pool allocation: improving performance by controlling data structure layout in the heap. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 129–142. Chicago, Illinois, United States (2005)Google Scholar
  74. 74.
    Lipasti, M.H., Schmidt, W.J., Kunkel, S.R., Roediger, R.R.: Spiad: Software prefetching in pointer and call-intensive environments. In: Proceedings of Annual ACM/IEEE MICRO International Symposium on Microarchitecture, pp. 252–263. Ann Arbor, Michigan, United States (1995)Google Scholar
  75. 75.
    Loshin D.: Efficient Memory Programming. 1st edn. McGraw-Hill Professional, New York City, New York, United States (1998)Google Scholar
  76. 76.
    Luk, C.: Tolerating memory latency through software-controlled pre-execution in simultaneous multi-threading processors. In: Proceedings of International Symposium on Computer Architecture, pp. 40–51. Goteborg, Sweden (2001)Google Scholar
  77. 77.
    Luk, C., Mowry, T.C.: Compiler-based prefetching for recursive data structures. In: Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 222–233. Cambridge, Massachusetts, United States (1996)Google Scholar
  78. 78.
    Maly K.: Compressed tries. Commun. ACM 19(7), 409–415 (1976)MATHCrossRefMathSciNetGoogle Scholar
  79. 79.
    McCreight E.M.: A space-economical suffix tree construction algorithm. J. ACM 23(2), 262–271 (1976)MATHCrossRefMathSciNetGoogle Scholar
  80. 80.
    Morrison D.R.: Patricia: a practical algorithm to retrieve information coded in alphanumeric. J. ACM 15(4), 514–534 (1968)CrossRefMathSciNetGoogle Scholar
  81. 81.
    Mowry, T.C.: Tolerating latency through software-controlled data prefetching. Ph.D. thesis, Computer Systems Laboratory, Stanford University (1995)Google Scholar
  82. 82.
    Muchnick S.S.: Advanced Compiler Design and Implementation. 1st edn. Morgan Kaufmann, San Francisco, California, United States (1997)Google Scholar
  83. 83.
    Nilsson, S., Tikkanen, M.: Implementing a dynamic compressed trie. In: Proceedings of Workshop on Algorithm Engineering, pp. 25–36. Saarbrucken, Germany (1998)Google Scholar
  84. 84.
    Patterson D.A., Hennessy J.L.: Computer Organization and Design: The Hardware/Software Interface. 3rd edn. Morgan Kaufmann, San Francisco, California, United States (2005)MATHGoogle Scholar
  85. 85.
    Ramakrishna, M.V., Zobel, J.: Performance in practice of string hashing functions. In: Proceedings of Symposium on Databases Systems for Advanced Applications, vol. 6, pp. 215–224. Melbourne, Australia (1997)Google Scholar
  86. 86.
    Ramesh R., Babu A.J.G., Kincaid J.P.: Variable-depth trie index optimization: theory and experimental results. ACM Trans. Database Syst. 14(1), 41–74 (1989)MATHCrossRefGoogle Scholar
  87. 87.
    Rao, J., Ross, K.A.: Cache conscious indexing for decision-support in main memory. In: Proceedings of International Conference on Very Large Databases, pp. 78–89. Morgan Kaufmann (1999)Google Scholar
  88. 88.
    Rao, J., Ross, K.A.: Making B+-trees cache conscious in main memory. In: Proceedings of ACM SIGMOD International Conference on the Management of Data, pp. 475–486. Dallas, Texas, United States (2000)Google Scholar
  89. 89.
    Roth, A., Moshovos, A., Sohi, G.S.: Dependence based prefetching for linked data structures. In: Proceeidngs of International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 115–126. San Jose, California, United States (1998)Google Scholar
  90. 90.
    Roth, A., Sohi, G.S.: Effective jump-pointer prefetching for linked data structures. In: Proceedings of International Symposium on Computer Architecture, pp. 111–121. IEEE Computer Society Press (1999)Google Scholar
  91. 91.
    Rubin, S., Bernstein, D., Rodeh, M.: Virtual cache line: a new technique to improve cache exploitation for recursive data structures. In: Proceedings of International Conference on Compiler Construction, pp. 259–273. Amsterdam, The Netherlands (1999)Google Scholar
  92. 92.
    Sarwate D.V.: A note on universal classes of hash functions. Inf. Process. Lett. 10(1), 41–45 (1980)MATHCrossRefMathSciNetGoogle Scholar
  93. 93.
    Sedgewick R.: Algorithms in C, Parts 1–4: Fundamentals, Data structures, Sorting, and Searching. 3rd edn. Addison-Wesley, Boston Massachusetts, United States (1998)Google Scholar
  94. 94.
    Severance D.G.: Identifier search mechanisms: a survey and generalized model. ACM Comput. Surv. 6(3), 175–194 (1974)MATHCrossRefGoogle Scholar
  95. 95.
    Shanley T.: The Unabridged Pentium 4: IA32 Processor Genealogy. 1st edn. Addison-Wesley, Boston, Massachusetts, United States (2004)Google Scholar
  96. 96.
    Silverstein, A.: Judy IV shop manual (2002). http://judy.sourceforge.net/
  97. 97.
    Sinha, R.: Efficient sorting of large sets of strings. Ph.D. thesis, School of Computer Science and Information Technology, RMIT Univeristy Australia (2005)Google Scholar
  98. 98.
    Sinha, R., Ring, D., Zobel, J.: Cache-efficient string sorting using copying. ACM J. Exp. Algorithmics 11(1.2) (2006)Google Scholar
  99. 99.
    Sinha, R., Zobel, J.: Cache-conscious sorting of large sets of strings with dynamic tries. ACM J. Exp. Algorithmics 9(1.5) (2004)Google Scholar
  100. 100.
    Stoutchinin, A., Amaral, J.N., Gao, G.R., Dehnert, J.C., Jain, S., Douillet, A.: Speculative prefetching of induction pointers. In: Proceedings of International Conference on Compiler Construction, pp. 289–303. Genova, Italy (2001)Google Scholar
  101. 101.
    Szpankowski W.: On the height of digital trees and related problems. Algorithmica 6(2), 256–277 (1991)MATHCrossRefMathSciNetGoogle Scholar
  102. 102.
    Truong, D.N., Bodin, F., Seznec, A.: Improving cache behavior of dynamically allocated data structures. In: Proceedings of International Conference on Parallel Architectures and Compilation Techniques, pp. 322–329. Paris, France (1998)Google Scholar
  103. 103.
    Wang, Z., Burger, D., McKinley, K.S., Reinhardt, S.K., Weems, C.C.: Guided region prefetching: a cooperative hardware/software approach. In: Proceedings of International Symposium on Computer Architecture, pp. 388–398. San Diego, California, United States (2003)Google Scholar
  104. 104.
    Williams H.E., Zobel J., Heinz S.: Self-adjusting trees in practice for large text collections. Softw. Pract. Exp. 31(10), 925–939 (2001)MATHCrossRefGoogle Scholar
  105. 105.
    Yang C., Lebeck A.R., Tseng H., Lee C.: Tolerating memory latency through push prefetching for pointer-intensive applications. ACM Trans. Archit. Code Optim. 1(4), 445–475 (2004)CrossRefGoogle Scholar
  106. 106.
    Yotov, K., Roeder, T., Pingali, K., Gunnels, J., Gustavson, F.: An experimental comparison of cache-oblivious and cache-conscious programs. In: Proceedings of Symposium on Parallel Algorithms and Architectures, pp. 93–104. San Diego, California, USA (2007)Google Scholar
  107. 107.
    Zhao Q., Rabbah R., Wong W.: Dynamic memory optimization using pool allocation and prefetching. ACM SIGARCH Comput. Archit. News 33(5), 27–32 (2005)CrossRefGoogle Scholar
  108. 108.
    Zobel J., Heinz S., Williams H.E.: In-memory hash tables for accumulating text vocabularies. Inf. Process. Lett. 80(6), 271– 277 (2001)MATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag 2010

Authors and Affiliations

  1. 1.University of MelbourneParkvilleAustralia

Personalised recommendations