Einen String umdrehen

Message
Author
Descartes

Re: Einen String umdrehen

#16 Post by Descartes »

<img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
[cite]
gro.ung.www :etisbew ruO .gniht lanif enO :NAMLLATS

]....snoitasrevnoc gnippalrevo[

]...snruojda ecneiduA[

.ereh renosirp uoy gnidloh ton
m'I ]rethguaL[ .wonk uoy ,emit yna ta evael ot eerf era uoY :NAMLLATS

]esualppA[

.kaerb
a si ereht taht elpoep ot eton ot ekil d'I .siht rof gib yrev mih ewo
ew dnA .noisseforp ruo ni detnedecerpnu ,kniht I ,si hcihw noissucsid
larom dna lacitilop fo level a edutidren lacitilopa lanimret sti rof
cilbup lareneg eht ni nwonk si hcihw noisseforp a otni detcejni sah
drahciR taht yas ot tnaw I .yltrohs sgnideecorp eht esolc dluohs eW

.erawtfos eerf ,gnitirw ylbissop dna ,gnisu ot detcerid eb
dluohs ti fo emos taht tseggus dluow I .ygrene lautcelletni fo tnuoma
suomrone na detareneg ylbairavni sah noitatneserp s'drahciR :GREBNOHCS

.taht dne ot ekil ylniatrec dluow I oS .syaw niatrec ni smargorp eht
gnisu morf su pots ecilop eht evah nac yeht taht os ,smargorp eht fo
srenwo eht ot tuo dnah ot srewop lagel laiceps gnitaerc si tnemnrevog
ehT .eerfnon ti ekam ot gninevretni si tnemnrevog ehT .noitnevretni
tnemnrevog fo esuaceb s'taht ,erawtfos eerf ton s'ti nehw ,rebmemer
dnA .erawtfos eerf eb dluohs erawtfos dehsilbup lla kniht I ,sey tuB

.aera emas eht ni s'ti hguohtla ,eussi tnereffid a
s'tI .gnorw fo dnik tnereffid a s'taht tub gnorw a si tahT .ytinamuh
morf ti gnidlohhtiw era uoy dna ,ytinamuh ot lufpleh ylsuodnemert si
ti fi ekil ,taht od ot gnorw si ti nehw semit eb nac ereht ,eurt s'ti
dnA .eussi ycavirp si sihT .seinapmoc sedulcni taht dnA .ti esu dna
yletavirp margorp a etirw ot thgir eht evah elpoep taht kniht I ,wonk
uoY .erawtfos dehsilbup rof siht esu ylno dluow I ,lleW :NAMLLATS

?ti sserp uoy dluow ,erawtfos rieht eerf ot seinapmoc
lla ecrof dna hsup dluoc uoy taht nottub a saw ereht fI :NOITSEUQ

.erom gnissucsid htrow ton s'tI .edisa na si siht
dnA .eussi tnereffid a si elohw a sa metsys eht fo eman ehT .taht
tuoba seil ydobon ,tcejorP UNG eht fo trap si margorp nevig a nehw
dnA .smargorp laudividni revoc sesnecil ehT .os kniht t'nod I ,oN

.smargorp derevoc-LPG
htiw deyalpsid eb kramedart eht eriuqer dluoc uoY :NOITSEUQ

---cut---cut---cut--- .... ---cut---cut---cut---

.elcyc a fo dnik emas eht yltcaxe ni devom CP eht fo yrtne eht
htiw ecalp koot taht stnempoleved eht fo tol A .snoitcerid rehto ni
ti dehsup ,stekram rieht dnapxe ot deen eht ni ,srerutcafunam erawtfos
neht dna ,eerf emaceb tI .selcyc ni tnew ew dnA .eerf saw erawtfos
yllacisab ,s'06' eht ni dleif eht ni detrats tsrif I nehW :YKSTERU

]esualppA[ ]rethguaL[
.tnemevom tnereffid a si ecruos nepO .erawtfos eerf od I :NAMLLATS

]rethguaL[ ...
esnes a nI .gnitseretni ylralucitrap ecruos nepo fo noissucsid
eht dnif I .dlom taht otni thgir sllaf ranimes siht ,noitatneserp
ralucitrap siht dnA .snoissucsid gnitseretni ylralucitrap evah
ot si ytisrevinu rojam a fo elor eht dnA .snoissucsid gnitseretni
evah ot dna etabed retsof ot ecalp a si ytisrevinu a fo elor ehT

.rekaeps eht ecudortni ot gniog si ohw ,dE ot revo ti nrut I erofeb
,stnemmoc wef a yas ot tnaw I .ereh uoy emoclew ot tnaw I ,tnemtrapeD
ecneicS retupmoC eht ni su fo lla fo flaheb no ,dnA .ygolonhceT
decnavdA rof retneC eht fo srotceriD-oC eht fo eno osla m'I
.ssenisuB fo loohcS nretS eht ta revo m'I .yksterU ekiM m'I :YKSTERU

1002 yaM 92 no kroY weN ,kroY weN ni ytisrevinU kroY weN noitarepooC
dna modeerF :erawtfoS eerF ,hceeps s'namllatS .M drahciR fo tpircsnarT
[/cite]

arni

Re: Einen String umdrehen

#17 Post by arni »

Achso hab hier einen Athlon 1.4Ghz.
Der Streamausdruck:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
std::cout << argv<font size="1"> << std::endl
</font><hr></pre></blockquote>
verbraucht natürlich viel Power. Wenn man den weglässt liegt c++ bei 0.003s das klingt dann schon freundlicher ;) Ist aber immer noch ein wenig schlechter als c.


arni

Descartes

Re: Einen String umdrehen

#18 Post by Descartes »

Wenn man die minimale und maximale Laufzeit der einzelnen Programme sich anschaut, ist die C++ Variante mit inline und Template noch diejenige Lösung mit der stabilsten Laufzeit. Zumindest auf meinem alten Pentium 166 und der Version 2.95.3 des GNU C Compilers.

Es kann sein, dass die Version 3 des GNU C Compilers bzw. des GNU C++ Compilers noch einmal etwas bessere Laufzeiten herausholen kann (vor allem auf aktuellen CPUs).

Aber egal. Wem es wirklich auch auf das letze bisschen Performance anlegt der könnte vielleicht mit einer in Assembler geschriebenen Version (zumindest einer optimierten Reverse-Funktion) einen wesentlichen Geschwindigkeitsgewinn herausholen.

Wie dem auch sei. Wir weichen langsam vom Thema ab. Es ging ehemals einfach nur um das /wie/ und nicht um das /wie performant/ bzw. /das performanteste/.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
3 3 3 3 3 3 3
0 1 2 3 4 5 6
0....5....0....5....0....5....0....5....0....5....0....5....0 ms
|<------>| C++ (ganz oben mit inline und template)
|<---------------------------->| C++ (c++ version des c-proggies)
|<---------------->| C
</font><hr></pre></blockquote>

de

Re: Einen String umdrehen

#19 Post by de »

a) std::cout ist langsam! Jo. machmal std::cout.sync_with_stdio(false); damit bin ich schneller als mit puts() oder printf()
b) Dann kann ich ja std::string nehmen.
c) Dann kann ich std:reverse nehmen. Das ist genausoschnell, wie eure 'hardcoded' Versionen. Sieht dann so aus:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <iostream>
#include <algorithm>
#include <string>

int main() {
std::cout.sync_with_stdio(false);
std::string s;
std::getline(std::cin, s);
std::reverse(s.begin(), s.end());
std::cout << s << std::endl;
}</font><hr></pre></blockquote>

Rechnet das doch auch mal rein. Ist IMHO die schnellste und lesbarste Version.

User avatar
arni
Posts: 73
Joined: 10. Feb 2002 19:32
Location: Berlin
Contact:

Re: Einen String umdrehen

#20 Post by arni »

Yepp, das iss ja auch der Vorteil von C++. Die Streamfunktionen machen vieles sehr übersichtlich und einfach. Solche einfachen Sachverhalte "erschlage" ich aber ungern mit einem so komplexen Gebilde wie den iostreams ;)

Kyle

Re: Einen String umdrehen

#21 Post by Kyle »

Es wurde schon alles programmiert aber noch nicht von jeden ;o)

Post Reply