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

Reply via email to