Bug 7487 – A faster std.bitmanip.BitArray.opCat

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-02-12T11:42:53Z
Last change time
2024-12-01T16:14:51Z
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: phobos#9922 →

Comments

Comment #0 by bearophile_hugs — 2012-02-12T11:42:53Z
This implements an operator on std.bitmanip.BitArray, to append one or more bits at the beginning: BitArray opCatAssign(BitArray b) { auto istart = len; length = len + b.length; for (auto i = istart; i < len; i++) this[i] = b[i - istart]; return this; } BitArray opCat_r(bool b) { BitArray r; r.length = len + 1; r[0] = b; for (size_t i = 0; i < len; i++) r[1 + i] = this[i]; return r; } I think there are faster ways to perform those operations, that avoid copying single bits, and work mostly with a memmove() on the array of size_t pointed by BitArray.ptr (followed by few single bit copies if necessary). In my code I have found that opCat_r() to be slow.
Comment #1 by lovelydear — 2012-04-19T08:55:17Z
See also 7488 and 7490
Comment #2 by robert.schadek — 2024-12-01T16:14:51Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9922 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB