String Umwandlung beschleunigen



  • Hallo, habe hier eine umwandlung von Strings.
    Es sind teilweise mehrere 10 tausend zeilen zu lesen und umzuwandeln, der bisherige code braucht dafür mehrere minuten...
    das muss doch irgendwie scheller gehen 😃

    jemand ne idee?

    for  (int linecounter = startline; (linecounter <= startline + counter) && (linecounter < filterbuffer.size()); linecounter++)
    	{
    		if(filterbuffer.at(linecounter)->getEnable())
    		{
    			offset = filterbuffer.at(linecounter)->getOffset();
    			messagelength = filterbuffer.at(linecounter)->getMessageLength();
    			messagetype = filterbuffer.at(linecounter)->getMessageType();
    
    			if ((offset + messagelength + MESSAGETYPESIZE) > buffer->Length)
    			{
    				setprocesserror(errorcode::BUFFEREND,"", offset + messagelength + MESSAGETYPESIZE);
    				break;
    			}
    
    			else
    			{
    				output = String::Concat(output, filterbuffer.at(linecounter)->getLinenum().ToString("D8"));	//Print Linecounter
    				output = String::Concat(output, " ", dataToHexString(true, offset,LENHEADER));
    
    				timediff = bytesToTime(offset + OFFSETTIME);
    
    				output = String::Concat(output,printtimestring(startime, timediff));
    				output = String::Concat(output, " ", dataToHexString(!isMessageType(messagetype,CONFIGDATA), offset + OFFSETDATA , messagelength + MESSAGETYPESIZE - OFFSETDATA), "\n");
    				linesread++;
    			}
    		}
    
    		if (messagetype == LASTLINE) break;			
    	}
    


  • Alles zu einem großen String zu machen mit Concat ist wohl das Problemchen.

    Dafür gips glaube ich den StringBuilder.



  • volkard schrieb:

    Alles zu einem großen String zu machen mit Concat ist wohl das Problemchen.

    Dafür gips glaube ich den StringBuilder.

    Hab ich auch vermutet
    Danke, ich werd mir den StringBuilder gleich mal genauer anschaun

    Edit:

    Hat das ganze wesentlich beschleunigt
    vielen, vielen Dank 🙂


Anmelden zum Antworten