Code optimieren - Buffer reseten



  • Hallo zusammen,

    mit folgendem Beispiel möchte ich einen Raster-Buffer ab einer gewissen Speicherstelle bis zum Ende hin auf '0' setzen/löschen. Mit der Version 2 habe ich über Pointer-Zuweisung schon schnellere Ergebnisse bekommen, aber das ist mir immer noch zu langsam. Gibt's da noch eine Möglichkeit der Codeoptimierung ?

    BYTE          BMP_Black[36256],  BMP_Cyan[36256];
    unsigned int  loop, row_byte_C, row_byte_K, ymax;
    unsigned char *pBuffer = 0;
    
        // Reset rest of buffer line
        // 1. Version
        switch( color )
          {
           case Black:   loop = row_byte_K;
                         for ( ; loop < ymax; loop++ ) {BMP_Black[loop] = 0x00;}
                         break;
           case Cyan:    loop = row_byte_C;
                         for ( ; loop < ymax; loop++ ) {BMP_Cyan[loop] = 0x00;}
                         break;
           ......
          }
    
        // Reset rest of buffer line
        // 2. Version
        switch( color )
          {
           case Black:   loop = row_byte_K;
                         pBuffer = &BMP_Black[loop];
                         for ( ; loop < ymax; loop++ ) {*pBuffer++ = 0x00;}
                         break;
           case Cyan:    loop = row_byte_C;
                         pBuffer = &BMP_Cyan[loop];
                         for ( ; loop < ymax; loop++ ) {*pBuffer++ = 0x00;}
                         break;
           ......
          }
    

    Danke und Gruß

    WoWe



  • ich würde memset benutzen anstelle einer Schleife.


Anmelden zum Antworten