1. 04 Mar, 2009 1 commit
    • Mark Olesen's avatar
      Switched from old hashing functions to use Bob Jenkins' hash routine · 17548296
      Mark Olesen authored
      - If the underlying type is contiguous, FixedList hashes its storage directly.
      - Drop labelPairHash (non-commutative) from fvMeshDistribute since
        FixedList::Hash does the right thing anyhow.
      - Hash<edge> specialization is commutative, without multiplication.
      - Hash<triFace> specialization kept multiplication (but now uLabel).
        There's not much point optimizing it, since it's not used much anyhow.
      
      Misc. changes
      
      - added StaticAssert to NamedEnum.H
      - label.H / uLabel.H : define FOAM_LABEL_MAX, FOAM_ULABEL_MAX with the
        values finally used for the storage.  These can be useful for pre-processor
        checks elsewhere (although I stopped needing them in the meantime).
      17548296
  2. 02 Mar, 2009 1 commit
    • Mark Olesen's avatar
      Added Jenkin's hash functions in C++ form · 44a86232
      Mark Olesen authored
      - not much speed difference between SuperFastHash and Jenkin's lookup3 but
        both are 5-10% faster than what is currently implemented in Foam::string,
        albeit inlining probably helps there.
      
      - TODO: integration with existing infrastructure
      44a86232
  3. 27 Feb, 2009 4 commits
    • Mark Olesen's avatar
      reorganized locations of some primitives · f83e4cbd
      Mark Olesen authored
      f83e4cbd
    • Mark Olesen's avatar
      StaticAssert added · 106d417d
      Mark Olesen authored
      - catch people using silly template sizes for FixedList, PackedList
      106d417d
    • Mark Olesen's avatar
      PackedList iterator bugfix · dbc9b742
      Mark Olesen authored
      - compare iteratorBase == iteratorBase by value, not position
        thus this works
            list[a] == list[b] ...
      
      - compare iterator == iteratorBase and const_iterator == iteratorBase
        by position, not value. The inheritance rules means that this works:
            iter == list.end() ...
        this will compare positions:
            iter == list[5];
        Of course, this will still compare values:
            *iter == list[5];
      dbc9b742
    • Mark Olesen's avatar
      Preliminary work on hashing · 576d9388
      Mark Olesen authored
      - Hash returns unsigned
      - FixedList templated on unsigned int
      - include uLabel.H in UList, HashTable etc. so the output function is know
        throughout
      576d9388
  4. 26 Feb, 2009 2 commits
    • Mark Olesen's avatar
      HashTable changes · a46c85f5
      Mark Olesen authored
      - make table power-of-two, but since it seems to give 1-2% performance
        improvement, maybe forget it too.
      
      - remove two-argument form of hashing classes and do the modulus direclty
        within HashTable instead. This simplifies things a fair bit.
      
      - migrate Hash<void*> from db/dlLibrary to primitives/hashes/Hash
      a46c85f5
    • Mark Olesen's avatar
      PackedList bugfix, HashTable tweak · 2aeee852
      Mark Olesen authored
      - it was possible to create a PackedList::iterator from a
        PackedList::const_iterator and violate const-ness
      
      - added HashTable::printInfo for emitting some information
      
      - changed default table sizes from 100 -> 128 in preparation for future
        2^n table sizes
      2aeee852
  5. 25 Feb, 2009 5 commits
  6. 24 Feb, 2009 8 commits
  7. 20 Feb, 2009 2 commits
  8. 19 Feb, 2009 3 commits
  9. 18 Feb, 2009 9 commits
  10. 17 Feb, 2009 5 commits