char vergleich



  • hi,

    ich hab eine suchfunktion geschrieben. jetzt hat sich herausgestellt, dass diese mit vba zu lnagsam für mehrere 100tsnd datensätze ist. nun möchte ich das in c++ realisieren, allerdings mit char (übergabe: char*zudurchsundesfeld, char*pattern). wie kann ich die kompletten char vars miteinander vergleichen... und das möglichst effizient. ich hab extra die "fetten" iostreams ausen vor gelssen, da die ja langsamer sind als char und ich brauch die performance dringend. falls andere vorschläge vorhanden, wäre ich natürlich auch für diese offen. vielen dank..

    übriggens schraubt mal an eurer forensuche.. die is ja... SCHEISSE



  • öhm wozu willst du denn iostream benutzen ?
    Wenn du mittels stl arbeiten wollen würdest dann nimm std::string statt char*.
    Diese kann man mittels == vergleichen.
    Wenn das alles aber zu wenig performant ist, naja warum nicht
    strcmp aus der <cstring>?



  • ich hab extra die "fetten" iostreams ausen vor gelssen, da die ja langsamer sind als char

    Wo ist der Sinn? Man kann doch keinen Stream mit dem Datentyp char vergleichen. Und man kann schon mal garnicht sagen was schneller ist! Du versuchst "Äpfel mit Birnen zu vergleichen"! 🙂

    Bitte auch objektiver deine Wünsche und Verbesserungsvorschläge an dem Board posten. "Die Forensuche ist scheiße!" - Was ist das für eine Aussage? 👎



  • b43r_3o=o3 schrieb:

    hi,

    ich hab eine suchfunktion geschrieben. jetzt hat sich herausgestellt, dass diese mit vba zu lnagsam für mehrere 100tsnd datensätze ist. nun möchte ich das in c++ realisieren, allerdings mit char (übergabe: char*zudurchsundesfeld, char*pattern). wie kann ich die kompletten char vars miteinander vergleichen... und das möglichst effizient. ich hab extra die "fetten" iostreams ausen vor gelssen, da die ja langsamer sind als char und ich brauch die performance dringend. falls andere vorschläge vorhanden, wäre ich natürlich auch für diese offen. vielen dank..

    nimm std::string und dann die Methoden compare() oder find() bzw rfind()

    b43r_3o=o3 schrieb:

    übriggens schraubt mal an eurer forensuche.. die is ja... SCHEISSE

    Was ist daran scheiße ? N bissl konkreter...!

    Achja: Ich würde immer mit Wildcards suchen, sonst findeste fast nix :p



  • ach jetzt ja - ein(e) suchergebniss - der tipp mit den wildcards war fein.. thx

    meine aussagen sind alle objektiv - wie objektiv diese sind entscheidet die objektivität des betrachters...

    sry... sollte natürlich strings sein... hab diese wohl mit iostreams verwechselt... genau diese wollte ich nicht benutzen (cstring, STL, etc...) ich bräuchte was richtig performantes...



  • Dann poste doch im C Forum oder schreib dein Programm direkt in Assembler!? 🙂



  • Ich habe auch schon schnelle Sortierungeg in VB(A) gesehen. Daher die
    Frage, wie sortierst du denn bisher ? Ein schlechter Algorithmus wird
    auch in einer anderen Programmiersprache nicht besser.



  • b43r_3o=o3 schrieb:

    ach jetzt ja - ein(e) suchergebniss - der tipp mit den wildcards war fein.. thx

    meine aussagen sind alle objektiv - wie objektiv diese sind entscheidet die objektivität des betrachters...

    sry... sollte natürlich strings sein... hab diese wohl mit iostreams verwechselt... genau diese wollte ich nicht benutzen (cstring, STL, etc...) ich bräuchte was richtig performantes...

    Wenn ich von <cstring> rede, weisst du schon dass,
    dies nichts mehr mit stl zu tun hat, oder ?
    Wenn dir strcmp ( oder besser strncmp ) zu langsam ist,
    bin ich mehr als überrascht um ehrlich zu sein.
    Da würd ich nur noch memcmp
    als ggf performanter ansehen. aber wie willst du denn char* noch schneller vergleichen als mit strncmp oder memcmp ohne assembler zu benutzen



  • strcmp hilft übrigens auch nich weiter, da der den string vergleicht aber nicht schaut, Ob in einem string etwas enthalten ist..

    Beispiel:

    Feld A = ABCDEF

    wenn der Anwender nach CD sucht, wird er mit stringcompare auch nich weit kommen. Selbe gilt für Sortierung. Klar kann ich nen Index setzen bzw. ne Sortierung auf Daten setzen... aber das wäre verschwendete zeit, da einem das nicht weiterhilft...

    ich bin trozdem weiter offen für alle Meinungen...


  • Mod

    shapeless schrieb:

    sry... sollte natürlich strings sein... hab diese wohl mit iostreams verwechselt... genau diese wollte ich nicht benutzen (cstring, STL, etc...) ich bräuchte was richtig performantes...

    wer diese sachen durcheinanderwirft, hat offensichtlicch keine ahnung davon. daraus folgt, dass er auch keine ahnung von ihrer performance haben kann und sich seine meinung bestenfalls (oder schlimmstenfalls je nach standpunkt) nur vom hörensagen gebildet hat. damit erübrigt sich eine sachliche diskussion.



  • @ lucky_tux

    das mit Assembler hab ich mir schon überlegt... is aber zu viel Aufwand.. Ich hab mal n Taschenrechner mit den 4 Grundrechenarten geschrieben für n 8051 - lol - 1251 zeile Programmcode.. auf nem C Controller hab ich dafür leppische 25 Zeile benötigt.. =))



  • @ shapeless

    ja ich weiß dass strcmp nix mit stl zu tun hat...



  • Hallo

    nimm strstr als Äquivalent zu std::string::find

    bis bald
    akari



  • Ist das Vergleichen von Strings messbar langsamer als das Vergleichen von char[]? Sollte mich doch wundern.

    EDIT: Es mag an meinem einseitigen Test liegen aber bei mir sind die Ergebnisse von std::string::find und std::strstr virtuell gleichschnell. 'strstr' ist minimal langsamer (bei jeder Wiederholung des Tests).



  • @camper

    wer noch nicht mal korrekt kommentieren kann - für den gilt wohl glaub ich das selbe...



  • @Konrad Rudolph

    kann ihc nicht 100% behaupten, aber ich glaube davon gehört zu haben

    @akari

    vielen dank - genau so was habe ich gesucht



  • @ alle

    funktionert genial/gut/schnell/super =)) thx an euch


Anmelden zum Antworten