Geschwindigkeit verbessern
-
Eine ganz wesentliche Verbesserung wäre, die Zeilen gar nicht erst zu speichern. Du machst ja sowieso nichts damit. Zähl einfach die Anzahl der Zeilenumbrüche in der Datei. Denk dran, dass die Datei eventuell nicht auf einem Zeilenumbruch endet.
PS: C++-Einzeiler (mit jeder Menge Templates ):
auto line_count = std::count( std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(), '\n');
Ich wage mal die Behauptung, dass es keine wesentlich schnellere Lösung geben wird.
-
mit jeder Menge Templates
hättest doch bestimmt noch mehr einbauen können
-
Danke Leute
Mein csv File ist ca 2 GB gross und benutze Windows Code BlocksSeppj, der gibt bei mir aus dass Count kein member von Std ist
Was mache ich da falsch
-
#include <algorithm>
Codeblocks mit Mingw? Soweit ich weiß ist Code Blocks doch nur eine IDE ohne festen eingebauten Compiler, oder?
Die Hauptfrage die sich bei Geschwindigkeitsproblemen stellt sind erstmal die Compilerflags. (-O, -O2 o.ä.)
-
Entweder hast du es auch mit einem grossen "C" geschrieben, was schlicht falsch ist, oder du hast vergessen den
algorithm
Header zu inkludieren.Doku: http://en.cppreference.com/w/cpp/algorithm/count
Edit: Und vielleicht hast du ja auch
std
mit einem grossen "S" geschrieben - ebenfalls falsch.
-
Oh hatte algorithm vergessen
Peinlich haha
Ist echt schneller , dankeLeute noch eine frage und zwar soll ich eine Schnittstelle programmieren s.d.
Man mit programmiersprache r mein code über Shell Fenster ansteuern kann
Weiss da jemand mehr ?
-
Servus28 schrieb:
Leute noch eine frage und zwar soll ich eine Schnittstelle programmieren s.d.
Man mit programmiersprache r mein code über Shell Fenster ansteuern kann
Weiss da jemand mehr ?Unverständlich. Bitte noch einmal versuchen, mit Fokus auf Grammatik und Kontext.
-
Und zwar will ich mein Code schneller machen lassen.
Den bei sehr großen CSV Dateien, dauert es zu lange.
Hab gelesen, dass das Blockweise einlesen der Datei, Performance verspricht
leider hänge ich auch daran
-
Leute noch eine frage und zwar soll ich eine Schnittstelle programmieren s.d.
Man mit programmiersprache r mein code über Shell Fenster ansteuern kanndafür bitte einen neuen Post erstellen - nicht einfach mitten drinn mit was neuem anfangen
Und zwar will ich mein Code schneller machen lassen.
Den bei sehr großen CSV Dateien, dauert es zu lange.
Hab gelesen, dass das Blockweise einlesen der Datei, Performance versprichtCode?
leider hänge ich auch daran
in der 1. Zeile oder was ist dein Problem
-
#include <iostream>>
#include <string>
#include <fstream>int main() {
std::string name;
std::cout <<"Datei zum Lesen oeffnen: \n";
std::cin>> name;std::string line;
std::ifstream datei;
datei.open(name.c_str());int i =0;
while(getline(datei,line))i++;std::cout <<"Lines:"<<i<<"\n";
}
damit ist gemeint, dass ich es nicht hinkriege
die Datei binär einzulesen und die einfach die Zeilenumbrüche zu zählen.
Somit wäre es schneller als mit while(getline(..))
-
Servus28 schrieb:
die Datei binär einzulesen und die einfach die Zeilenumbrüche zu zählen.Somit wäre es schneller als mit while(getline(..))
Dachte SeppJ hat dir das schon irgendwo gezeigt.
Aus Interesse würde ich mich daran mal versuchen wollen. Kannst du einen Aufbau deiner Datei posten? Sagen wir mal die ersten 10 Zeilen. Und was willst du mit den Daten am Ende machen?
-
Hab es auch leider nicht so hinbekommen
Hey danke , sehr lieb von dir
21221.121,312,1211.121212,3131,12122das
121.1,121223.122,3312221,de212,11111
12,331,deas22,2112212.5774,134664
87655,1313444,1331.313,55fd,453132
2424,2444.2318,4242frf,6777,1111
121.1,121223.122,3312221,de212,11111
12,331,deas22,2112212.5774,134664
87655,1313444,1331.313,55fd,453132
2424,2444.2318,4242frf,6777,1111
65433.2424442424,devvf331,6664,33,1
.......
.....hat circa 5004312 Zeilen
-
cout << "5004312";
Schneller geht's nicht..
-
Oh hatte algorithm vergessen
Peinlich haha
Ist echt schneller , dankeHab es auch leider nicht so hinbekommen
ich dachte es wäre jetzt schon schneller - nicht genug
oder was hast du nicht hinbekommen?und das fast gleiche Beispiel vom Anfang einfach noch mal zu posten ist
ist auch schon grenzwertig
-
Servus28 schrieb:
Oh hatte algorithm vergessen
Peinlich haha
Ist echt schneller , dankeWie lange braucht das denn mit SeppJs Ansatz? Wie schnell stellst du dir das vor, sollte es sein?
Ich stelle auch nochmal die Frage nach den Compiler Flags?!
-
Schlangenmensch schrieb:
Wie lange braucht das denn mit SeppJs Ansatz? Wie schnell stellst du dir das vor, sollte es sein?
Ich bezweifle, dass er meine Lösung überhaupt ausprobiert hat. Dazu wäre ein Minimum an Eigeninitiative nötig gewesen, da ich kein
int main
und andere Selbstverständlichkeiten davor geschrieben habe.