Ein newtype über 'Bool' mit einer besseren 'Vector'-Instanz: 8x weniger Speicher, bis zu
3500x schneller.
Das Paket <https://hackage.haskell.org/package/vector vector> stellt
unboxed Arrays von 'Bool's dar und verbraucht 1 Byte (8 Bit) pro Booleschem Wert. Diese Bibliothek
bietet einen newtype-Wrapper 'Bit' und eine benutzerdefinierte Instanz eines unboxed 'Vector',
der Bits dicht packt und damit einen __8x kleineren Speicherbedarf__ erreicht. Die
Leistung bleibt weitgehend gleich; die größte Verschlechterung tritt bei
zufälligen Schreibvorgängen auf (bis zu 10 % langsamer). Andererseits ist 'Vector' 'Bit' bei bestimmten Massen-Bitoperationen
bis zu 3500x schneller als 'Vector' 'Bool'.
=== Thread-Sicherheit
* "Data.Bit" ist schneller, aber Schreib- und Flip-Vorgänge sind nicht threadsicher. Das liegt daran,
dass naive Aktualisierungen nicht atomar sind: Sie lesen das gesamte Wort aus dem Speicher,
ändern dann ein Bit und schreiben das gesamte Wort zurück. Gleichzeitiges Ändern
nicht überlappender Slices desselben zugrundeliegenden Arrays kann ebenfalls zu
unerwarteten Ergebnissen führen, da sie ein Wort im Speicher teilen können. *
"Data.Bit.ThreadSafe" ist langsamer (meist 10–20 %), aber Schreib- und Flip-Vorgänge sind
threadsicher. Außerdem funktioniert das gleichzeitige Ändern nicht überlappender Slices
desselben zugrundeliegenden Arrays wie erwartet. Operationen, die mehrere Elemente betreffen, sind jedoch nicht als atomar garantiert.
=== Ähnliche Pakete
* <https://hackage.haskell.org/package/bv bv> und
<https://hackage.haskell.org/package/bv-little bv-little> bieten keine mutable
Vektoren.
* <https://hackage.haskell.org/package/array array> ist speichereffizient für
'Bool', verfügt aber nicht über eine praktische 'Vector'-Schnittstelle und ist nicht threadsicher.
Paths come from the repository package-file index for the observed builds. They describe archive/package associations, not every file that will exist on a running system after maintainer scripts, alternatives, generated state, diversions, or installation choices.
Jede Zeile ist Paketindex-Metadaten für eine Version, Architektur, Suite und ein Repository. Namen, URLs und Größen stammen aus der Quelle; ein Link ist ein veränderbarer Abrufort, kein Weitergabanspruch von OpenFactory.
Repository signatures authenticate metadata. Artifact hashing is recorded separately. Neither establishes package safety.
1.1.5.0-150500.11.3.2 / aarch64Beobachtet Sep 1, 2026sha512 b0485af5fdc1…eb4454e5Prüfsumme der Quelle
Metadata observed; artifact bytes were not independently fetched or hashed by this catalog import. The digest below is source-reported.
Prüfsumme der Quelle (sha512): b0485af5fdc11d64a09d80948d7484636309a6d7a90cb77b1b4b3d4850ed781d0d3945f94013e0f7983004db95a444d434ac16202cb8439f6e2796eceb4454e5
1.1.5.0-150500.11.3.2 / ppc64leBeobachtet Sep 1, 2026sha512 11bbd74cf80b…77a16985Prüfsumme der Quelle
Metadata observed; artifact bytes were not independently fetched or hashed by this catalog import. The digest below is source-reported.
Prüfsumme der Quelle (sha512): 11bbd74cf80b0e84558750d108257bea2ba43cce970bc45964f06306017806d64c8d2afdcdf426d4dd5ae12fd4bfeff09bcaa01e3faa25543b76ffb277a16985
1.1.5.0-150500.11.3.2 / s390xBeobachtet Sep 1, 2026sha512 e90ca5957567…5baa4a87Prüfsumme der Quelle
Metadata observed; artifact bytes were not independently fetched or hashed by this catalog import. The digest below is source-reported.
Prüfsumme der Quelle (sha512): e90ca5957567788b756d1b1c875b58dc2f297c656715685f6b52e0ee60d2fe61cfccdde4e1474a82314e0a3d16f6002380d1facd94f663ed1dd1f76f5baa4a87
1.1.5.0-150500.11.3.2 / x86_64Beobachtet Sep 1, 2026sha512 ed0576977198…cabd28aaPrüfsumme der Quelle
Metadata observed; artifact bytes were not independently fetched or hashed by this catalog import. The digest below is source-reported.
Prüfsumme der Quelle (sha512): ed057697719890e5ebc827bd7c463f242ecd682a1fbe0c8d8515d25863220b852fad204913a5beede696499cd2dbb7b7fb735f3cc979b3fb2b6f2895cabd28aa