Bug 6697 – std.bitmanip.FastBitMatrix

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2011-09-19T15:11:25Z
Last change time
2024-12-01T16:14:25Z
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: phobos#9912 →

Attachments

IDFilenameSummaryContent-TypeSize
1025bit_matrix.dFirst version of the bit matrixapplication/octet-stream7829
1026bit_matrix.dVersion 1.1 of the bit matrixapplication/octet-stream7639
1027bit_matrix.dVersion 1.2 of the bit matrixapplication/octet-stream7678

Comments

Comment #0 by bearophile_hugs — 2011-09-19T15:11:25Z
Created attachment 1025 First version of the bit matrix I suggest to add a fast 2D matrix of bits to Phobos (probably in std_bitmanip): - It is a common enough data structure, useful for simple implementations of various games, cellular automata, 2D sets, and more. - Despite being a simple data structure, it's not obvious, especially if you want it to be fast. A naive implementation that uses a BitArray is not fast enough. - It doesn't need to be too much general. A 3D bit array is in my experience quite less commonly useful, and the implementation is different enough. In attach there is an efficient implementation, that I have used it for several purposes. Some notes: - It wastes a bit of RAM to be faster. - I have named it FastBitMatrix because "Fast" helps remember this 2D matrix wastes some memory to be as fast as possible. - It uses two little commonly useful functions that in my opinion are better moved in std.math. - Currently it allocates memory with a normal dynamic array. With a small change it's usable with smarter/faster allocators. - There are ddocs and unittests for all the functions (but the unittests of FastBitMatrix don't test its contracts). - I have not tried it on 64 bit systems. - Optional are a toString/writeTo method, a copy method, postblit, and other constructors. - Currently it's just a struct with value semantics.
Comment #1 by bearophile_hugs — 2011-09-19T17:38:09Z
Created attachment 1026 Version 1.1 of the bit matrix
Comment #2 by bearophile_hugs — 2011-09-19T17:43:27Z
Created attachment 1027 Version 1.2 of the bit matrix
Comment #3 by dmitry.olsh — 2012-05-30T06:31:53Z
Why not finalize 64-bit and make a pull request for it?
Comment #4 by dmitry.olsh — 2018-05-31T12:33:53Z
Would be nice for a DUB package not Phobos really.
Comment #5 by robert.schadek — 2024-12-01T16:14:25Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9912 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB