string suchen.
-
optimirungs frage: die string klasse... (.find) ist mir zu langsam, der string den ich suche ist 42byte der such string ist ca3600byte, würdet ihr den such string verkürzen oder es gleich anders angehen.?
-
Wie willst du den Suchstring denn verkürzen? Woher willst du wissen, dass der zu suchende Teil dann nicht weggekürzt wird?
-
Ich versteh die Frage auch nicht. Code?
-
Kann es sein, dass du an den falschen Stellen versuchst zu optimieren?
-
allgemein glaube ich das die string klasse der fahlsche weg ist.
if(algo_filter.find(sstr) <= 0){ cout << alert << endl; return -1; }
-
Ja und warum? Bzw. was willst du anders/besser machen?
-
es ist mir zu langsam, und ich wollte nicht an der hardware optimiren
-
such mal nach boyer-moore.
je länger der suchstring, desto besser.
um das mal zu verdeutlichen:string: abcdgfccfghzffdsfcfchfhfczhdsfsagtdsaffgxcgfxgxcfgxcgfcxfgsacfg
such: iuopiozpiopioupioupiuopuioupiuo
ich vergleiche das o ganz am ende des suchstrings mit dem s an der gleichen stelle im string.
aha, erstens siend sie ungleich und zweitens kommt das s gar nicht im suchstring vor. ideal.
kann den suchstring bedenkenlos um strlen(suchstring) nach rechts verschieben und dort weitervergleichen. solange die glückssträhne anhält, rast der sucher in 42-er schritten duch den string und ist ratz-fatz fertig.
und ausgefuchste algos legen tabellen an, wie weit man bei nem fund jeweisl hopsen kann.
-
so ist das also ... dann werde ich das mal so lassen danke .. für eure hilfe
-
witec schrieb:
so ist das also ... dann werde ich das mal so lassen danke .. für eure hilfe
ich denke, du willst die ne keline suchfunktion (oder klasse) selber schreiben. ich nehme nicht an, daß string::find() boyer-moore benutzt. ich nehme an, du wirst durch ne eigene klasse nen netten performance-schub kriegen.