Posts by muxsator

    Late und early binding hat praktisch keinen Einfluss auf die "Geschwindigkeit" des Kodes. O(1..). Andere Faktoren sind maßgeblicher. Wenn das Python zu langsam ist, wird es auch in C(pp) zu langsam sein. :(

    Bernd, weil ich mich wunderte, wieso der 4er in dem, in diesem Thread angesprochenen, Fall langsamer ist als der 3er. Falls du es noch konkreter brauchst, es begann mit einer Messung der Schreibgeschwindigkeit eines USB-Sticks.


    Habe jetzt mal mit dem neuesten OS getestet.


    Von 20MB/s unter 5.10.103-v7l auf 138MB/s unter 5.15.61-v8 mit 1,5Ghz. Das übertrifft sogar meine erwartete Geschwindigkeit.

    Ich vermute nun, die Geschwindigkeit hängt entscheidend von der Bittigkeit des Betriebssystems' (32 nur bei meinem 4er) ab.

    Code
    dd if=/dev/random bs=8192 count=$((128*512)) of=/dev/null status=progress

    Urandom gleiche Geschwindigkeit.


    Der HRNG scheint /dev/hwrng zu sein. Dort kommen ich beim RPi3b+ auf 132KB/s und beim RPi4b auf 66KB/s.

    Was soll das?

    Kopiere aus /dev/random auf dem RPi3b+ mit 26MB/s, der RPi4b schafft nur 20MB/s. Kann mir das irgendjemand plausibilisieren?

    Jo, der "closure" Hinweis, hat mir etwas geholfen. Anscheinend gibt es die Bash(3?) Grammatik wirklich nicht her.

    Zwar nicht über die Klammerung, aber immerhin kann die neue Funktion jetzt mit variablen Parametern arbeiten.

    Solved!

    Erstmal - danke @raspbastler.


    Beispiel:

    Code
    runn 3 echo "ja"; echo "nein"
    ja
    ja
    ja
    nein

    Ich hätte gerne über die KLAMMERUNG von <echo "ja"; echo "nein">, nicht der ÄNDERUNG der Funktion runn:

    Code
    ja
    nein
    ja
    nein
    ja
    nein

    Post #15 macht es über 2 Parameter. Ich fragen nach Lösung über Parenthese! Ugh!!

    Runn führt cmd_1 n-mal aus, danach wird cmd_2 1-mal ausgeführt. Ich würde gerne n-mal (cmd_1; cmd_2;) ausführen als Block. Also cmd_1 -> cmd_2 -> cmd_1 -> cmd_2 -> cmd_1 ...

    Mahlzeit zusammen,


    ich habe eine Bash Funktion, welche n mal einen Befehl ausführt.

    Code
    loop n cmd_1

    Jetzt versuche ich einen Block von zwei Befehlen, iterativ n-mal ausführen. Der erste Befehl terminiert mit Exit-Code ≥ 0

    Gibt es eine Form der Klammerung, welche die Linksassoziativität aufhebt und das Gewünschte erreicht?

    So etwa:

    Code
    loop n ( cmd_1; cmd_2; ) 

    Funktion sieht so aus (würde es aber GERNE über die Klammerung lösen).

    Code
    runn() {
        number=$1
        shift
        for i in `seq $number`; do
        $@
        done
    }

    Unter Linux 5.10.103-v7l+ #1529