Der erste Punkt ist, dass weder dieser Code-Beispiele eine Datei lesen. Das klingt vielleicht doof oder falsch, aber es ist wahr. Was sie tatsächlich tun, ist eine Datei zum Lesen öffnen. Und in Bezug auf das, was sie tatsächlich tun, gibt es wahrscheinlich keinen großen Unterschied in ihrer jeweiligen Effizienz.
Wenn es darum geht, die Datei tatsächlich zu lesen, hängt der beste Ansatz davon ab, was die Datei enthält, in welcher Form die Daten für Ihre In-Memory-Algorithmen usw. sein müssen. Dadurch wird bestimmt, ob es besser ist zu verwenden Scanner
oder eine rohe Reader
, von einer Leistungsperspektive und wichtiger aus der Perspektive, Ihren Code zuverlässig und wartbar zu machen.
Schließlich besteht die Möglichkeit, dass dies keinen wesentlichen Einfluss auf die Gesamtleistung Ihres Codes hat. Was ich sage ist, dass Sie Ihre Anwendung vorzeitig optimieren. Sie sollten die Leistung vorerst ignorieren und die Version auswählen, die den Rest Ihres Codes vereinfacht. Wenn die Anwendung funktioniert, profilieren Sie sie mit einigen repräsentativen Eingabedaten. Die Profilerstellung zeigt Ihnen an, wie viel Zeit für das Lesen der Datei in absoluten Zahlen und für den Rest der Anwendung aufgewendet wird. Dies wird Ihnen sagen, ob es lohnt die Mühe zu versuchen, um das Lesen der Datei zu optimieren.
Das einzige bisschen von Leistungsratschläge, die ich geben würde, ist, dass Buchstabe für Buchstabe, der von einem ungepufferten Eingabestrom oder Leser liest, ineffizient ist. Wenn die Datei auf diese Weise gelesen werden muss, sollten Sie dem Stapel einen BufferedReader hinzufügen.
Verwandte: http://StackOverflow.com/Questions/2231369/Scanner-VS-BufferedReader –
Verwandt: [Scanner v. StreamTokenizer] (http://StackOverflow.com/a/2082174/230513). – trashgod