Aufwand für Funktion



  • Hallo zusammen,

    ich soll den Aufwand für folgende Funktion bestimmen:

    void add_num(uint8_t dest[], void* value,
                          uint8_t cnt,
                          unsigned int* pos) {
    
            unsigned int array_index = *pos / 8;
            unsigned int val_index = cnt - 1;
            unsigned int dest_index = 7 - (*pos - (8 * array_index));
    
            (*pos) += cnt;
    
            while (cnt > 0) {
    
                if (*(uint8_t*) value & (1 << val_index)) {
                    dest[array_index] |= (1 << dest_index);
                }//End if
    
                cnt--;
                val_index--;
                dest_index--;
    
                if (dest_index > 7) {
                    dest_index = 7;
                    array_index++;
                }//End if
            }//End while
        }//End addNum
    

    Bin da aber ehrlich gesagt bissl planlos. Jemand ne Idee????

    Gruß
    Uwe



  • Hmm... das hängt wohl davon ab, was du mit Aufwand meinst.

    Der Speicherbedarf wird wohl nicht so gross sein, weil du nur drei uints anlegst.
    Da wird wohl der Overhead für die Funktion größer sein.

    Der Zeitbedarf wird auch nicht so groß sein, weil die Schleife nur höchstens 256 durchlaufen wird.



  • Hi,

    Ja ich meine Zeitaufwand. Kann ich da ne obere Schranke in Form von XXXX CPU-Takten angeben? Das Zielsystem hat nen MSP430 und das Programm wird mit einem MSPGCC erzeugt. Klar, man muß natürlich noch unsigned int uint32_t oder so umwandeln. Wie "teuer" ist das shiften?

    Danke schon mal.
    Uwe



  • mngbd schrieb:

    Der Speicherbedarf wird wohl nicht so gross sein, weil du nur drei uints anlegst.
    Da wird wohl der Overhead für die Funktion größer sein.

    tzzzz. wie war das mit den funktionsaufrufen? was wird da auf den stack gelegt?
    genau! die funktionsparameter.
    nochmal zählen!



  • uwerothfeld, kannst du dir nicht den generierten Assemblercode anschauen?



  • uwerothfeld schrieb:

    ich soll den Aufwand für folgende Funktion bestimmen:

    soll? wer will das wissen?
    die laufzeit wächst mit der grösse des arrays, also arraygrösse verdoppeln, dann braucht sie doppelt so viel zeit.
    🙂



  • Hi zusammen,

    also das array hat ne größe n, die methode wird m mal aufgerufen, wobei sich jeweils value und cnt ändern. pos wird nur von aufruf zu aufruf weitergeschoben, damit immer schön hintereinander weg geschrieben wird, innerhalb des arrays. tatsächlichen assembler code habe ich nicht, die aufgabe lautet, dass das zielsystem nen msp430 ist und das programm mit nen mspgcc erzeugt wird.
    mh, doofes ding.
    uwe



  • uwerothfeld_ schrieb:

    also das array hat ne größe n, die methode wird m mal aufgerufen, wobei sich jeweils value und cnt ändern. pos wird nur von aufruf zu aufruf weitergeschoben, damit immer schön hintereinander weg geschrieben wird, innerhalb des arrays. tatsächlichen assembler code habe ich nicht, die aufgabe lautet, dass das zielsystem nen msp430 ist und das programm mit nen mspgcc erzeugt wird.
    mh, doofes ding.
    uwe

    Ich weiß jetzt nicht, wieviel schlechter der mspgcc ist, aber da sind C- Compiler und Simulatormit dabei. Innerhalb von 30 Tagen dürfte sich die Aufgabe lösen lassen.


Anmelden zum Antworten