2009-07-06 15 views
11

Es tut mir leid, wenn dies ein Duplikat ist, aber ich konnte keine definitive Antwort auf die beste Praxis für jeden Typ finden.Gepuffert gegen nicht gepuffert, welches benutzt man?

Ich würde gerne wissen, was die entsprechenden Bedingungen sind, die definieren, wann BufferedReader vs FileReader oder BufferedInput/OutputStream vs FileInput/OutputStream zu verwenden? Gibt es eine Formel, die dir immer sagt, was angemessen ist?

Sollte ich nur immer gepuffert verwenden?

Dank

+0

Was meinst du mit "definitiv"? –

+0

S.Lott: Ich denke, er sucht nur, wenn du jeden benutzen solltest. –

+0

Ich denke definitiv == Was ist die beste Praxis für jeden Typ – stackMe

Antwort

13

einen Puffer verwenden, wenn der Strom vielen kleinen Zugang haben wird. Verwenden Sie ungepuffert, wenn Sie relativ wenige, relativ große Zugriffe haben.

3

Die ungepufferte E/A sollte nur dann verwendet werden, wenn die durch Pufferung verursachte Verzögerung und Aggregation für Ihre Anwendung nicht geeignet ist.

+0

Was passiert, wenn Sie die Dinge selbst zwischen einem InputStream und OutputStream (oder umgekehrt) mit einem Byte [] 'puffern? Würden Sie ein Buffered * damit umhüllen? – Xailor

+0

Ändert nichts. – chaos

2

"Gibt es eine Formel, die Ihnen immer sagt, was angemessen ist?"

Wenn es war, wäre es bereits in den Bibliotheken und wäre keine Designentscheidung, die Sie treffen müssten.

Da es keine pat Antwort gibt, müssen Sie die Designentscheidung treffen, Sie müssen tatsächlich darüber nachdenken.

Oder Sie können beide Optionen ausprobieren und sehen, welche "besser" basierend auf Ihrem einzigartigen Problem und Ihren einzigartigen Kriterien ist.

Die meisten Standard-E/A-Bibliotheken sind gepuffert. Das ist ein Hinweis darauf, dass die meisten I/O-Operationen von der Pufferung profitieren. Aber nicht alles. Spiele benötigen zum Beispiel ungepufferten Zugriff auf die Spielsteuerung.

1

Denken Sie auch daran, dass die BufferedReader Ihnen eine bequeme readLine() Methode bietet, mit der Sie Ihren Inhalt Zeile für Zeile lesen können.

0

Ich empfehle Ihnen, Buffered * zu verwenden, wenn dies Ihre Anwendung schneller macht, sonst würde ich mich nicht darum kümmern. Versuchen Sie es mit realistischen Daten, um zu sehen, ob es hilft.

Verwandte Themen