digitalmars.D.bugs - [Issue 6697] New: std.bitmanip.FastBitMatrix
- d-bugmail puremagic.com (41/41) Sep 19 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6697
- d-bugmail puremagic.com (7/7) Sep 19 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6697
- d-bugmail puremagic.com (7/7) Sep 19 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6697
- d-bugmail puremagic.com (10/10) May 30 2012 http://d.puremagic.com/issues/show_bug.cgi?id=6697
http://d.puremagic.com/issues/show_bug.cgi?id=6697
Summary: std.bitmanip.FastBitMatrix
Product: D
Version: D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: enhancement
Priority: P2
Component: Phobos
AssignedTo: nobody puremagic.com
ReportedBy: bearophile_hugs eml.cc
Created an attachment (id=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.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 19 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6697 Created an attachment (id=1026) Version 1.1 of the bit matrix -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 19 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6697 Created an attachment (id=1027) Version 1.2 of the bit matrix -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 19 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6697
Dmitry Olshansky <dmitry.olsh gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dmitry.olsh gmail.com
06:31:53 PDT ---
Why not finalize 64-bit and make a pull request for it?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 30 2012









d-bugmail puremagic.com 