It's just a placeholder for various function parameters. I used to use (...) but switched to (~) in favor of not being an ambiguity with fold expressions in c++.
________________________ Dennis Oberst Software Engineer The Qt Company GmbH Erich-Thilo-Str. 10 12489 Berlin, Germany dennis.obe...@qt.io https://www.qt.io Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 144331 B ________________________________ From: Development <development-boun...@qt-project.org> on behalf of Shawn Rutledge via Development <development@qt-project.org> Sent: Wednesday, September 6, 2023 11:56 AM To: Qt Development <development@qt-project.org> Subject: Re: [Development] New assign() Functionality Added to Qt Containers Sounds efficient. What is the meaning of the tilde the way you are using it here in operator=(~) ? > On 6 Sep 2023, at 11:30, Dennis Oberst via Development > <development@qt-project.org> wrote: > > Hello everyone, > > I would like to inform you that we've added assign(~) functionality to the > following > Qt containers: > > QVarLengthArray, QList, QByteArray, and QString. > It is now incorporated into certain non-sharing operator=(~) implementations. > > As a quick heads up: assign() offers a convenient way to recycle allocated > memory, potentially resulting in greater efficiency compared to its > memory-allocating alternatives. > > We observed that the efficiency of QString::operator=(~) could be boosted of > up > to 30%! Here are some benchmarks to support this statement: > > (x86_64-little_endian-lp64 shared (dynamic) release build (O3); bygcc 13.2.1, > endeavouros ; 13th Gen Intel(R) Core(TM) i9-13900K > > benchmarks executed with -perf -iterations 1000000 > > * The last value at the EOL represent the string size. > > QString &operator=(const QByteArray &a) (current) > 64.3 cycles/iter; 300 instructions/iter; 17 nsec/iter (5) > 65.8 cycles/iter; 366 instructions/iter; 12 nsec/iter (10) > 62.9 cycles/iter; 301 instructions/iter; 11.5 nsec/iter (20) > 61.3 cycles/iter; 315 instructions/iter; 11.1 nsec/iter (50) > 71.4 cycles/iter; 386 instructions/iter; 13 nsec/iter (100) > 136.9 cycles/iter; 811 instructions/iter; 24.5 nsec/iter (500) > 245.8 cycles/iter; 1394 instructions/iter; 42.5 nsec/iter (1'000) > > QString &operator=(const QByteArray &a) (before) > 78 cycles/iter; 399 instructions/iter; 15.3 nsec/iter (5) > 82.3 cycles/iter; 465 instructions/iter; 15 nsec/iter (10) > 76.7 cycles/iter; 400 instructions/iter; 14 nsec/iter (20) > 79.5 cycles/iter; 414 instructions/iter; 14.5 nsec/iter (50) > 91.4 cycles/iter; 485 instructions/iter; 16.7 nsec/iter (100) > 189 cycles/iter; 910 instructions/iter; 34.4 nsec/iter (500) > 320 cycles/iter; 1666 instructions/iter; 56 nsec/iter (1'000) > > QString &operator=(const char *ch) (current) > 70 cycles/iter; 317 instructions/iter; 12 nsec/iter (5) > 71 cycles/iter; 383 instructions/iter; 12.3 nsec/iter (10) > 64 cycles/iter; 318 instructions/iter; 11.1 nsec/iter (20) > 69 cycles/iter; 340 instructions/iter; 12 nsec/iter (50) > 77 cycles/iter; 419 instructions/iter; 13.5 nsec/iter (100) > 141 cycles/iter; 899 instructions/iter; 24.4 nsec/iter (500) > 280 cycles/iter; 1518 instructions/iter; 48.4 nsec/iter (1'000) > > QString &operator=(const char *ch) (before) > 86.7 cycles/iter; 416 instructions/iter; 15 nsec/iter (5) > 87.8 cycles/iter; 482 instructions/iter; 15.7 nsec/iter (10) > 82.4 cycles/iter; 417 instructions/iter; 14.3 nsec/iter (20) > 90.2 cycles/iter; 443 instructions/iter; 15.6 nsec/iter (50) > 101.4 cycles/iter; 518 instructions/iter; 17.7 nsec/iter (100) > 204.4 cycles/iter; 994 instructions/iter; 36.5 nsec/iter (500) 337.9 > cycles/iter; 1789 instructions/iter; 58.9 nsec/iter (1'000) > > > > You can find the patch here: > https://codereview.qt-project.org/c/qt/qtbase/+/494280 > > Best, > > > ________________________ > Dennis Oberst > Software Engineer > > The Qt Company GmbH > Erich-Thilo-Str. 10 > 12489 Berlin, Germany > dennis.obe...@qt.io > https://www.qt.io > > Geschäftsführer: Mika Pälsi, > Juha Varelius, Jouni Lintunen > Sitz der Gesellschaft: Berlin, > Registergericht: Amtsgericht > Charlottenburg, HRB 144331 B > > -- > Development mailing list > Development@qt-project.org > https://lists.qt-project.org/listinfo/development -- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development
-- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development