Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #13213

Re: Bit packed array

Newsgroups de.comp.lang.java
Date 2018-10-04 03:34 -0700
References <a6a1936f-fd65-4f2f-987f-72ad8f2999ec@googlegroups.com> <posjd9$105$1@newsreader4.netcologne.de> <d57b7595-e1a8-4bd8-9c99-15d565f7ec1d@googlegroups.com> <pp4opd$tk2$1@newsreader4.netcologne.de>
Message-ID <935c2a6a-4cc6-4659-a9e5-ed8f85e95bb6@googlegroups.com> (permalink)
Subject Re: Bit packed array
From Heiner Kücker <mail@heinerkuecker.de>

Show all headers | View raw


Am Donnerstag, 4. Oktober 2018 12:07:43 UTC+2 schrieb Patrick Roemer:
> Responding to Heiner Kücker:
> "The number of input and output combinations for trivial programs is
> surprisingly large. It is astronomical for typical programs and beyond
> comprehension for typical systems. [...] Clearly, we can never test all
> inputs, states, or outputs."
> Robert V. Binder, Testing Object-Oriented Systems
> §3.3: The Limits of Testing
> 
> Das ist sehr gründlich gedacht, aber effektiv hast Du damit ja gar keine
> Tests, weil niemand sie je (komplett) laufen lassen wird. Unit Tests
> sollten eigentlich sogar nach jeder in sich abgeschlossenen
> Code-Änderung automatisiert durchlaufen; das kannst Du mit diesem Ansatz
> komplett knicken.
> 
> Üblicherweise wählt man für Unit Tests Szenarien mit (Kombinationen von)
> Extremen oder besonders hervorgehobenen Elementen aus dem erlaubten
> Bereich der Eingabewerte (hier etwa: 0, 1, Integer.SIZE,...) und einige
> mehr oder minder zufällige Werte, die pars pro toto für die sonstige
> Bandbreite stehen. Ergänzen kann man das durch randomisierte Tests a la
> QuickCheck[1]. Da gibt es wohl auch diverse Java-Ports; keine Ahnung,
> wie es sich damit arbeitet.

In den Klassen

BitPackedIntArrayArraycopyTestValueIterable

und

BitPackedLongArrayArraycopyTestValueIterable

habe ich statt die Werte mit einem Zähler zu erzeugen
ein Bitmuster erzeugt.

Mit der Verwendung des Bitmusters habe ich erst ab
einer bestimmten Bit-Breite begonnen, bei kleinen
Breiten läuft noch der Zähler.

Teilweise verwende ich auch nur Wert mit allen
Bits 0 oder alternativ allen Bits 1.

Es geht darum, dass die Ränder der Werte eingehalten
werden.

Etwas überrascht hat mich das Verhalten des Verschiebe-Operators

https://stackoverflow.com/questions/1023373/findbugs-warning-integer-shift-by-32-what-does-it-mean

Beim int-Verschiebe-Operator werden nur die niedrigsten 5 Bit des Operanden beachtet, bei Long 6 Bit.


Dieses Verhalten ist aber entsprechend dem Werteüberlauf bei den ganzzahligen Werten, falsches Ergebnis statt Exception.

> Viele Grüße
> Patrick
> 
> [1] http://www.cse.chalmers.se/~rjmh/QuickCheck/manual.html

Bei sowas muss man wahrscheinlich vorher eine Ahnung haben, was schief gehen kann.

Schöne Grüße
Heiner

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-09-22 19:33 -0700
  Re: Bit packed array Patrick Roemer <sangamon@netcologne.de> - 2018-10-01 09:46 +0200
    Re: Bit packed array Patrick Roemer <sangamon@netcologne.de> - 2018-10-02 10:21 +0200
    Re: Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-10-03 22:05 -0700
      Re: Bit packed array Patrick Roemer <sangamon@netcologne.de> - 2018-10-04 12:07 +0200
        Re: Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-10-04 03:34 -0700
          Re: Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-10-09 23:10 -0700
            Re: Bit packed array Patrick Roemer <sangamon@netcologne.de> - 2018-10-10 16:50 +0200
              Re: Bit packed array Joerg Meier <joergmmeier@arcor.de> - 2018-10-10 20:15 +0200
                Re: Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-10-10 23:17 -0700
                Mutation Testing (was: Bit packed array) Patrick Roemer <sangamon@netcologne.de> - 2018-10-12 12:12 +0200
              Re: Bit packed array Heiner Kücker <mail@heinerkuecker.de> - 2018-10-10 23:23 -0700

csiph-web