Wieviel Performance und RAM braucht was?



  • hmm vielen dank, eine frage noch:

    wenn ich statt multiplikation

    c=a*b
    

    die addition in forschleife nehme

    for( unsigned int i=0 ; i < a ; ++i) {
    c += b;
    }
    

    ist es genau so schnell?
    dass problem ist dass ich die zahl 0 in integerzyklus symbolisch als ganze positive zahl definieren will - also 0 = (die letzte zahl von integer), und die Null rausschmeisse die ich sowieso nicht gebrauchen kann



  • xBlackKnightx schrieb:

    ist es genau so schnell?

    Nur wenn der Compiler sehr klug ist.



  • [quote="xBlackKnightx"]wenn ich statt multiplikation

    c=a*b
    

    die addition in forschleife nehme
    ist es genau so schnell?
    [quote]
    nein. bei *sehr* wenigen schleifendurchläufen könntest du vielleicht leicht schneller sein. bei vielen durchläufen bestimmt nicht mehr.

    dass problem ist dass ich die zahl 0 in integerzyklus symbolisch als ganze positive zahl definieren will - also 0 = (die letzte zahl von integer), und die Null rausschmeisse die ich sowieso nicht gebrauchen kann

    das hab ich jetzt nicht verstanden.



  • [quote="volkard"][quote="xBlackKnightx"]wenn ich statt multiplikation

    c=a*b
    

    die addition in forschleife nehme
    ist es genau so schnell?

    nein. bei *sehr* wenigen schleifendurchläufen könntest du vielleicht leicht schneller sein. bei vielen durchläufen bestimmt nicht mehr.

    dass problem ist dass ich die zahl 0 in integerzyklus symbolisch als ganze positive zahl definieren will - also 0 = (die letzte zahl von integer), und die Null rausschmeisse die ich sowieso nicht gebrauchen kann

    das hab ich jetzt nicht verstanden.

    die Zahl 0 hat keine Funktion mit der division
    von daher wäre 4 / 0 = error - was falsch wäre wenn die 0 als ganze positive zahl betrachtet wird?

    mal anders gesagt:
    die Wertebereiche sind alles Zahlen, wie eine Uhr-Arimethik
    Wenn ich short 65535 noch eine eins hinzuaddiere geht es wieder von vorn: die Null
    so wäre short 65536er-Uhr-Arimethik.

    wenn ich jetzt 2 65536er-Uhrer-Arimethiken nehme: die erste zeigt auf 3 und die andere auf 456, und möchte die beiden uhren multiplizieren -> so muss 456 in der multiplikation 3 mal um 456 gedreht werden. und anders rum 456 mal um 3. die dritte uhr zeigt dann auf 1368

    jetzt ein anderes beispiel:
    wenn ich sie 0 mal 3 multipliziere, so kommt 0 raus. wenn 65536 * 3 wird es nur 3x ganz herumgedreht zeigt es wieder auf 65536 also die null

    so weit so gut

    so jetzt mal aufgepasst:
    wenn die erste uhr auf 32768 zeigt und die andere auf NULL und die beiden dann dividiere, so kommt eine fehlermeldung raus was unlogisch wäre
    denk daran dass die Null die 65536te Zahl ist, also:
    32768 / 65536 = 0,5 wäre

    da spuckt also was

    vielleicht sollte ich die division ganz vermeiden.

    und etwas mehr praktizierendes machen


Anmelden zum Antworten