Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-95096

Qt 6's new and improved QList fails its removeAll benchmarks

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reported
    • Priority: P3: Somewhat important
    • Resolution: Unresolved
    • Affects Version/s: 6.0.0, 6.2
    • Fix Version/s: None
    • Labels:
      None
    • Platform/s:
      All

      Description

      The benchmark lies to the metatype system about some types being primitive, movable and complex (for bonus points, add tests of non-primitive, copyable but not movable) and expects this to affect how QList goes about copying, so it can count calls to copy-constructors and copy-assignment to tell whether it's being done right. This stopped working at Qt 6, presumably because of significant changes to how metatypes work and how QList decides how to do its copying.

      [4/4] Linking CXX executable qtbase/tests/benchmarks/corelib/tools/qlist/tst_bench_qlist
      ********* Start testing of tst_QList *********
      Config: Using QtTest library 6.2.0, Qt 6.2.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 10.2.1 20210110), debian 11
      PASS   : tst_QList::initTestCase()
      FAIL!  : tst_QList::removeAll_primitive(0%) Compared values are not the same
         Actual   (MyBase::liveCount)          : 10000
         Expected (isComplex ? list.size() : 0): 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(303)]
      FAIL!  : tst_QList::removeAll_primitive(10%) Compared values are not the same
         Actual   (MyBase::liveCount)          : 10000
         Expected (isComplex ? list.size() : 0): 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(303)]
      FAIL!  : tst_QList::removeAll_primitive(90%) Compared values are not the same
         Actual   (MyBase::liveCount)          : 10000
         Expected (isComplex ? list.size() : 0): 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(303)]
      FAIL!  : tst_QList::removeAll_primitive(100%) Compared values are not the same
         Actual   (MyBase::liveCount)          : 10000
         Expected (isComplex ? list.size() : 0): 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(303)]
      PASS   : tst_QList::removeAll_movable(0%)
      RESULT : tst_QList::removeAll_movable():"0%":
           0.0018 msecs per iteration (total: 61, iterations: 32768)
      FAIL!  : tst_QList::removeAll_movable(10%) Compared values are not the same
         Actual   (MyBase::errorCount): 8996
         Expected (0)                 : 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(327)]
      FAIL!  : tst_QList::removeAll_movable(90%) Compared values are not the same
         Actual   (MyBase::errorCount): 1000
         Expected (0)                 : 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(327)]
      PASS   : tst_QList::removeAll_movable(100%)
      RESULT : tst_QList::removeAll_movable():"100%":
           0.036 msecs per iteration (total: 75, iterations: 2048)
      PASS   : tst_QList::removeAll_complex(0%)
      RESULT : tst_QList::removeAll_complex():"0%":
           0.0018 msecs per iteration (total: 61, iterations: 32768)
      FAIL!  : tst_QList::removeAll_complex(10%) Compared values are not the same
         Actual   (MyBase::errorCount): 8996
         Expected (0)                 : 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(327)]
      FAIL!  : tst_QList::removeAll_complex(90%) Compared values are not the same
         Actual   (MyBase::errorCount): 1000
         Expected (0)                 : 0
         Loc: [.../qtbase/tests/benchmarks/corelib/tools/qlist/main.cpp(327)]
      

      To reproduce: configure with -DQT_BUILD_BENCHMARKS=ON (to CMake, so after the -- option if running configure) and build; then

      ninja tst_bench_qlist && qtbase/tests/benchmarks/corelib/tools/qlist/tst_bench_qlist
      

      Observed on Debian/testing, but presumably cross-platform.

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              sonakur Sona Kurazyan
              Reporter:
              Eddy Edward Welbourne
              PM Owner:
              Vladimir Minenko Vladimir Minenko
              RnD Owner:
              Alex Blasche Alex Blasche
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:

                  Gerrit Reviews

                  There are no open Gerrit changes