Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Schnelligkeitsfrage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.06.2006, 13:48 Uhr
Karldin Shinowa
Professional Noob


Wass ist schneller:
1) eine Datei Zeichenweise auslesen und jedes Zeichen 2. Zeichen speichern
2) ganze Datei in String speichern und jedes 2. Zeichen aus dem string nehmen und speichern
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.06.2006, 14:11 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Die richtige Antwort dürfte vermutlich sein, dass kommt drauf an...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.06.2006, 14:14 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hey,die Antwort passt immer ...
Probier es doch einfach mal aus. Ich vermute,bei größeren Dateien ist es sinnvoll,sie Zeichenweise einzulesen. Bei kleinen ist es wohl eher sinnvoll,sie erst komplett einzulesen.Aber wie gesagt,einfach mal testen !
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2006, 14:17 Uhr
Karldin Shinowa
Professional Noob


Meine Input datei ist :
0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0
0 0 0 1 1 0 1 1 0
0 0 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
0 0 1 1 0 1 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

Kann aber auch größer sein 100*100 oder größer
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.06.2006, 16:46 Uhr
ao

(Operator)


Zeichenweise lesen ist unter Performance-Aspekten so gut wie nie sinnvoll, das erzeugt eine riesige Menge klitzekleiner Aufrufe und damit viel Overhead und wenig Nutzen.

Auch die Klarheit der Software kann darunter leiden; ich habe mal eine Klasse gesehen, die ein Text-File (Windows- INI-Format) zeichenweise einlas und analysierte, mit tausenden von Sprüngen vor und zurück - grauenvoll. Ein Zeilenpuffer hätte da schon viel geholfen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.06.2006, 22:53 Uhr
Hans
Library Walker
(Operator)


Hi,

den Gedanken von ao aufnehmend würde ich sagen, Du verabschiedest Dich für die Input/Output Operationen ganz von Zeichen oder Strings und machst das Blockweise. Zum Beispiel in Blöcken von je einem kilobyte, die Du mittels read oder write (C Standardbib, keine Ahnung wie die C++ äquivalente heissen) in den Speicher holst, dort verarbeitest und in eben so grossen Portionen wieder in die Datei schreibst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.06.2006, 10:06 Uhr
RHBaum




Zitat:
Wass ist schneller:

3. falls die Datei komplett in den freien speicher passt, da reinmappen und direkt auf dem Speicherbereich rumrutschen ^^

Weiss nich ob das wissen wolltest, aber wenn dir es wirklich auf geschwindigkeit ankommt ....leider verlierst damit die plattformunabhaengigkeit, oder darfst dich mit dem preprozessor rumaergern.

Ciao...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.06.2006, 10:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Hans:
Hi,

den Gedanken von ao aufnehmend würde ich sagen, Du verabschiedest Dich für die Input/Output Operationen ganz von Zeichen oder Strings und machst das Blockweise. Zum Beispiel in Blöcken von je einem kilobyte, die Du mittels read oder write (C Standardbib, keine Ahnung wie die C++ äquivalente heissen) in den Speicher holst, dort verarbeitest und in eben so grossen Portionen wieder in die Datei schreibst.

Hans


Evtl vorher ins Hardware/OS-Handbuch schauen wie groß die adressierten Speicherpages sind, denke mal wenn man direkt ne komplette Page (z.b 4kb) sich holt und die vollschreibt dürfte es schneller sein als wenn man immer mit "stückchen" rumwurschtelt, schliesslich swappen/pagen die Betriebsysteme ja andauernd.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.06.2006, 11:38 Uhr
ao

(Operator)



Zitat von FloSoft:
Evtl vorher ins Hardware/OS-Handbuch schauen wie groß die adressierten Speicherpages sind ...

Nein. "Vorher" niemals. Mit "vorsorglicher Optimierung" haben sich schon viele ihre Codestruktur versaut.

Wenn überhaupt, macht man sowas hinterher, wenn
1. tatsächlich ein Performanceproblem existiert UND
2. gesicherte Erkenntnisse (keine bloßen Vermutungen!) über die Ursache vorliegen UND
3. Highlevel-Optimierungen nicht weiterhelfen UND
4. durch Vorab-Versuche gesichert ist, dass Lowlevel-Maßnahmen eine hinreichende Beschleunigung bewirken und das Problem lösen können.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: