[squid-dev] [PATCH] Remove some splay users

Kinkie gkinkie at gmail.com
Tue Jan 13 10:19:09 UTC 2015


On Tue, Jan 13, 2015 at 3:09 AM, Amos Jeffries <squid3 at treenet.co.nz> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 13/01/2015 8:51 a.m., Kinkie wrote:
>> Hello, the attached patch changes some users of splay to std::set.
>> The aim is to get more predictable (if not necessarily better)
>> performance and leverage a cleaner API resulting in more readable
>> code.
>>
>> This is a merge snapshot of branch lp:~squid/squid/replace-splay
>> revno 13835; I will continue working on the branch to migrate more
>> users.
>>
>> The touched classes have been build- and run-tested.
>>
>
>
> in src/acl/UserData.h, src/acl/Eui64.h, etc
> * still need to include splay.h in these .h files?
>   perhapse it can be reduced down to the relevant .cc or dropped entirely.

dropped.

> in src/acl/Eui64.cc:
> * ACLEui64::parse() can be optimized a bit further:
>
>    while (const char *t = ConfigParser::strtokFile()) {
>     if (Eui::Eui64 *q = aclParseEuiData(t)) {
>        ... what used to follow the if
>        xfree(q);
>     }

done, although it is not a performance-critical path.

>   }
>
> * ACLEui64::dump() buf variable can remain as static. It's only used
> until SBuf data-copies, no need to re-allocate on each loop.

Ok

>  - also while changing, if possible use SZ_EUI64_BUF otherwise
> document why magic number is 48 used. (EUI uses 3 readable characters
> to represent each octet of the number - buf is approx. double the
> required size).

SZ_EUI64_BUF is 8; I understand that's for the binary representation,
not textual.
I kept the buffer as it was, after all it's not huge anyway.

>
>
> in src/acl/UserData.cc:
> * #include SbufAlgos.h before util.h

Done.

> * for ctor/dtor like ACLUserData::~ACLUserData() which have become
> NOP, please inline them in the .h where possible. That allows some
> more compiler optimizations.

Is that even true when they are virtual? But sure, it means fewer
lines of code so that's OK.

> * is cend() usable instead of end() for the find test in the function
> above ACLUserData::dump() [ chunk @55, I think its probably the end of
> match()]

Using const iterators in the copied-from container.

> * why is CaseInsensitveSBufCompare() not defined in SBufAlgos.h for
> re-use ?

Should I do that as part of this branch or merge separately?


More information about the squid-dev mailing list