Skip to content
Snippets Groups Projects
  1. Aug 23, 2018
  2. Aug 09, 2018
  3. May 04, 2018
  4. Apr 10, 2018
  5. Apr 03, 2018
    • Yuka Takahashi's avatar
      Don't remove local kDimension variable · 20c14c93
      Yuka Takahashi authored
      20c14c93
    • Yuka Takahashi's avatar
      ROOT start up time and memory optimization · 903503ca
      Yuka Takahashi authored
        There are some codes compiled at the start up time. For example,
          - #include \"cling/Interpreter/RuntimeUniverse.h\"
          - #include \"cling/Interpreter/DynamicLookupRuntimeUniverse.h\"
          - namespace cling { class Interpreter; namespace runtime { Interpreter* gCling }}}
          - PrintValue
        These are passed to Cling as string and initialized at the start up time.  So I think it makes sense to reduce top-level global variables, #includes and virtual functions.
      
        1. Global variables
          If we break at emitModule, we can get a list of global variables and functions which are actually deserialized. These include functions, variables, STL classes and all the functions derives from them.
       I tried to change them to for example constexpr, so that it's processed at compile time.
        2. Eagerly Deserialized decls
          Thanks to @Axel 's hint and tip, we could minimize eagerly deserialized decls deserialized in ASTReader::PassInterestingDeclsToConsumer. We already removed most of eagerly deserialized decls (Some are remaining to be removed, some are hard to remove and some don't cost a lot).
      
        So far, we got 9.2% of cpu time improvement and 8.8% of memory improvement at start up time in release build.
      
        - root.exe -q -l
          - master
            cpu time = 0.09186914285714286 sec (average of 7 times)
            res  memory = 142.008 Mbytes
      
          - HEAD
            cpu time = 0.08337842857142856 sec
            res  memory = 129.508 Mbytes
      
        - hsimple.C
        Improved by 13% of cpu time and 8.5% of memory
          - master
            cpu time = 0.0954708 sec (average)
            res  memory = 142.891 Mbytes
      
          - HEAD
            cpu time = 0.0833258 sec
            res  memory = 130.73 Mbytes
      
        With modules
          - Improvement by 17.7% in cputime and 2% in memory on root.exe -q -l
          (For memory, small improvement is because most of the memory is taken by LoadModules)
          - With this patch, modules is 11.2% slower in cpu time and 6% better in residential memory.
      903503ca
  6. Mar 27, 2018
  7. Feb 06, 2018
  8. Jan 10, 2018
  9. Dec 09, 2017
  10. Dec 04, 2017
    • Julien Nabet's avatar
      cppcheck: fix some reports · cd6fa81b
      Julien Nabet authored
      [net/monalisa/src/TMonaLisaWriter.cxx:956] -> [net/monalisa/src/TMonaLisaWriter.cxx:957]: (error) Iterator 'iter' used after element has been erased.
      [proof/proofd/src/XrdProofdProofServMgr.cxx:4648] -> [proof/proofd/src/XrdProofdProofServMgr.cxx:4646]: (error) Iterator 'iter' used after element has been erased.
      
      [math/minuit2/src/Minuit2Minimizer.cxx:669] -> [math/minuit2/src/Minuit2Minimizer.cxx:669]: (style) Same expression on both sides of '||'.
      [math/minuit2/src/Minuit2Minimizer.cxx:736] -> [math/minuit2/src/Minuit2Minimizer.cxx:736]: (style) Same expression on both sides of '||'.
      [math/minuit2/src/Minuit2Minimizer.cxx:753] -> [math/minuit2/src/Minuit2Minimizer.cxx:753]: (style) Same expression on both sides of '||'.
      
      [tree/tree/src/TBasket.cxx:852]: (style) Redundant condition: If 'flag >= 80', the comparison 'flag' is always true.
      [misc/table/src/TFileIter.cxx:467] -> [misc/table/src/TFileIter.cxx:468]: (warning) Identical condition 'thisRunNumber<runNumber', second condition is always false
      
      [math/mathcore/src/TMath.cxx:826]: (style) Array index 'ia' is used before limits check.
      [math/mathcore/src/TMath.cxx:830]: (style) Array index 'ib' is used before limits check.
      [math/mathcore/src/triangle.c:15434]: (style) Array index 'aspectindex' is used before limits check.
      [roofit/roofit/src/RooIntegralMorph.cxx:375]: (style) Array index 'igapHigh' is used before limits check.
      
      [core/winnt/src/TWinNTSystem.cxx:5035]: (style) Statements following return, break, continue, goto or throw will never be executed.
      [tree/treeplayer/src/TSelectorDraw.cxx:380]: (style) Statements following return, break, continue, goto or throw will never be executed.
      
      [net/auth/src/TAuthenticate.cxx:4205]: (error) Resource leak: fd
      [roofit/roofitcore/src/BidirMMapPipe.cxx:1880]: (error) Memory leak: s
      [tree/tree/src/TLeaf.cxx:222]: (error) Memory leak: countname
      [tree/tree/src/TLeaf.cxx:226]: (error) Memory leak: countname
      [tmva/tmva/src/MethodBase.cxx:2783]: (error) Memory leak: pdfS
      [tmva/tmva/src/MethodBase.cxx:2783]: (error) Memory leak: pdfB
      
      [roofit/roofitcore/src/RooAbsArg.cxx:280]: (style) Redundant checking of STL container element existence before removing it.
      
      [core/dictgen/src/rootcling_impl.cxx:457]: (performance) Possible inefficient checking for 'fieldSelRules' emptiness.
      [core/dictgen/src/rootcling_impl.cxx:4573]: (performance) Possible inefficient checking for 'filesIncludedByLinkdef' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:322]: (performance) Possible inefficient checking for 'fWebConn' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:374]: (performance) Possible inefficient checking for 'fCmds' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:419]: (performance) Possible inefficient checking for 'fWebConn' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:475]: (performance) Possible inefficient checking for 'fWebConn' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:587]: (performance) Possible inefficient checking for 'fCmds' emptiness.
      [gui/canvaspainter/v7/src/TCanvasPainter.cxx:787]: (performance) Possible inefficient checking for 'fCmds' emptiness.
      [html/src/TDocParser.cxx:684]: (performance) Possible inefficient checking for 'currentType' emptiness.
      [proof/proofd/src/XrdProofdManager.cxx:804]: (performance) Possible inefficient checking for 'uwrks' emptiness.
      [proof/proofd/src/XrdProofdSandbox.cxx:467]: (performance) Possible inefficient checking for 'staglst' emptiness.
      [proof/proofd/src/XrdProofdSandbox.cxx:571]: (performance) Possible inefficient checking for 'actln' emptiness.
      [roofit/roofitcore/src/RooSimWSTool.cxx:574]: (performance) Possible inefficient checking for 'slist' emptiness.
      
      all the reports Prefer prefix ++/-- operators for non-primitive types
      cd6fa81b
  11. Nov 14, 2017
  12. Oct 27, 2017
  13. Oct 09, 2017
  14. Jul 28, 2017
    • Raphael Isemann's avatar
      Use ROOT_STANDARD_LIBRARY_PACKAGE where possible [NFC] · ac0de75b
      Raphael Isemann authored
      This refactors the CMake build files to no longer manually call
      the CMake functions for generating and linking the dicionairies.
      One reason is to reduce boilerplate, the other is that it is now
      no longer possible to have naming mismatches between the dictionary
      generation arguments and linking function arguments which was causing
      the race conditions we had in our build system.
      
      This also now follows more strictly the separation between dependencies
      like Math, Tree and Core and pure linking flags to external libraries.
      ac0de75b
  15. Jul 12, 2017
    • Raphael Isemann's avatar
      Fixed dependencies between rootcling invocations and linking. · 82ecb5f0
      Raphael Isemann authored
      The naming of the library in the two function calls ROOT_GENERATE_DICTIONARY
      and ROOT_LINKER_LIBRARY was often not matching. This causes that
      ROOT_LINKER_LIBRARY couldn't correctly set its dependencies to the output
      file of ROOT_GENERATE_DICTIONARY and therefore causes race conditions in
      the build system.
      
      Note: We're attached all dependencies to a custom target, and
      NOT to the output files generated by rootcling. This should mitigate
      the race conditions we experience when multiple targets in different
      Make jobs request the same output file as a dependency and then
      suffer from this Make problem that is described here:
      https://cmake.org/Bug/view.php?id=10082
      
      This patch also adds a (commented out) piece of code that can print
      warnings if we don't have a fitting G__*.cxx file for a
      ROOT_LINKER_LIBRARY call. This is sometimes intended, so I didn't
      enable this warning by default. We should enable this code
      by default in the future once we have a way to express if we
      intentionally don't provide the G__*.cxx file when calling
      ROOT_LINKER_LIBRARY.
      82ecb5f0
    • Raphael Isemann's avatar
      Add missing dependencies to ROOT_GENERATE_DICTIONARY · 8a646b53
      Raphael Isemann authored
      ROOT_GENERATE_DICTIONARY allows to specify dependencies, but we currently
      don't actually specify those. As we need this for getting the module
      dependencies right (as we can't build missing modules on demand), we should
      add those dependencies here. Then those dependencies propagate to the
      rootcling invocation which will in the future also generate the C++ module
      for the selected dictionary.
      8a646b53
  16. Jun 13, 2017
  17. Jun 06, 2017
    • Vassil Vassilev's avatar
      Do not confuse clang-format. · 68a8a335
      Vassil Vassilev authored
      ClassImp is a macro defined in Rtypes.h. It can be written without trailing
      semicolon. However, clang-format is based on lexing and it doesn't know at
      all about preprocessors and how to expand macros. When visiting ClassImp(X)
      it thinks this is not a completed entity (as it doesn't expand macros) and
      considers the next line as continuation of the previous.
      
      Inserting a semicolon fixes the issue and makes formatting with clang-format
      in the ROOT codebase less tricky.
      68a8a335
  18. May 09, 2017
  19. Feb 14, 2017
    • Raphael Isemann's avatar
      Remove all redundant header guards around include directives · 04fe6d5d
      Raphael Isemann authored
      
      Many headers contains redundant header guards around #include directives:
      
          #ifndef ROOT_TTree
          #include "TTree.h"
          #endif
      
      This patch removes the #ifndef's around these includes as they
      don't serve any pratical purpose anymore and are no longer part
      of the current ROOT coding convention.
      
      This patch also fixes the 153 typos that are contained in the
      symbols of the #ifndef directives.
      
      Signed-off-by: default avatarVassil Vassilev <vvasilev@cern.ch>
      04fe6d5d
  20. Dec 17, 2016
  21. Dec 14, 2016
  22. Nov 10, 2016
  23. Jun 27, 2016
  24. Jun 23, 2016
  25. Apr 29, 2016
  26. Apr 26, 2016
  27. Apr 25, 2016
  28. Jan 29, 2016
  29. Dec 10, 2015
  30. Nov 13, 2015
Loading