Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2062

cpp flag for using unordered_set instead of set

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Later
    • None
    • 0.9.2
    • C++ - Compiler
    • None

    Description

      It would be nice if the cpp compiler could generate code to use unordered_set instead of set. unordered_set is faster & usually an unordered_set is wanted rather than an ordered one. Furthermore, since unordered_set only needs a hash function, we could generate one for every type.

      The hash code generated can be along the lines of what Eclipse does for auto-generated hash codes:

      struct ThriftObj {
      1: string f1;
      2: i32 f2;
      3: SomeOtherThriftObj f3;
      }

      // header file:
      namespace std {
      template <> struct hash<ThriftObj>

      { size_t operator()(const ThriftObj& o); }

      }

      // cpp file:
      namespace std {
      template <> struct hash<ThriftObj>

      { size_t operator()(const ThriftObj& o) constexpr size_t prime = 31; size_t hashcode = 1; hashcode += o.__isset.f1 ? prime * std::hash<decltype(o.f1)>()(o.f1) : 0; hashcode += o.__isset.f2 ? prime * std::hash<decltype(o.f1)>()(o.f2) : 0; hashcode += o.__isset.f3 ? prime * std::hash<decltype(o.f1)>()(o.f3) : 0; }

      }
      }

      Attachments

        Issue Links

          Activity

            People

              hcorg Konrad Grochowski
              vlovich Vitali Lovich
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: