Skip to content
Snippets Groups Projects
  1. Oct 02, 2013
  2. Oct 01, 2013
    • Martin Nolte's avatar
      [c++11] add support for C++11 constexpr · 45990b69
      Martin Nolte authored
      As decided on the developer meeting in Aachen, we support (but do not
      rely on) the C++11 keyword constexpr. This patch adds an m4-check for
      constexpr and a header (cxx11.hh) defining a macro DUNE_CONSTEXPR either
      as constexpr or empty (depending on the compiler support for it). It is
      then used in FieldVector and FieldMatrix on size, rows, and cols.
      45990b69
  3. Sep 27, 2013
  4. Sep 23, 2013
  5. Sep 19, 2013
  6. Sep 18, 2013
  7. Sep 10, 2013
    • Steffen Müthing's avatar
      Switch to a more robust algorithm for hash combining · 49a531b5
      Steffen Müthing authored and Christoph Grüninger's avatar Christoph Grüninger committed
      The current algorithm for hash combining behaves very poorly when hashing
      multiple short streams of small integers like (0,1,1,0,x) that only differ
      by a single large number x. These objects appear frequently in PDELab's ordering
      framework, and the resulting bad hash distribution really hurts the performance
      of the unordered containers in PDELab.
      
      This patch switches to an algorithm that is inspired by CityHash (see the source
      code comment) and has proven to be much more robust in testing.
      49a531b5
  8. Sep 02, 2013
  9. Aug 27, 2013
  10. Aug 26, 2013
  11. Aug 23, 2013
    • Oliver Sander's avatar
      Use variadic templates for PushBackTuple and PushFrontTuple, if available · 4152f73f
      Oliver Sander authored
      The two classes PushBackTuple and PushFrontTuple are both implemented
      using a long list of template specializations.  This makes for a lot
      of code, and it also limits the maximum tuple size that can be used.
      Using variadic templates (FYI: available since gcc-4.3) instead
      allows a generic implementation in only a few lines of code, and
      only the compiler being the upper limit on tuple size.
      
      An implementation using variadic templates has already been given
      in the documentation of PushBackTuple/PushFrontTuple.  This patch
      starts to actually use that implementation, provided that
      HAVE_VARIADIC_TEMPLATES is set.  Otherwise the old implementation
      is used.
      4152f73f
  12. Aug 22, 2013
  13. Aug 19, 2013
  14. Aug 18, 2013
  15. Jul 24, 2013
    • Steffen Müthing's avatar
      [FieldVector] Change FieldVector default constructor to default-initialize data · b4328de2
      Steffen Müthing authored
      The default constructor of the FieldVector has intentionally avoided calling a
      constructor for the contained data to eliminate the potential overhead of that
      initialization.
      During implementation of a new creation mode of the BCRSMatrix, it was discovered
      that this behavior is problematic due to its inconsistency: If the data type
      contained in the FieldVector is a non-trivial type, a default-constructed
      FieldVector will be fully initialized. On the other hand, with a primitive data
      type it will be in an uninitialized state, potentially causing undefined behavior.
      
      As this behavior might be very unintuitive for users and made implementing the new,
      more efficient creation method for the BCRS matrix very difficult to implement, this
      patch changes the FieldVector default constructor to always default-construct its
      contents regardless of its type. While this change does introduce a possible
      performance regression (for primitive types, the compiler now has to zero out the
      memory), the overhead has been measured to be minimal.
      
      The actual implementation prefers to use the new C++11 unified initialization
      syntax and falls back to std::fill for older compilers. The distinction was made
      because newer compilers generate much more efficient code when using unified
      initialization, and for user-defined types, this approach avoids first calling the
      default constructors and then the copy assignment operator.
      b4328de2
  16. Jul 13, 2013
  17. Jul 10, 2013
Loading