leggyorsabb csere

Fórumok

Melyik a leggyorsabb megoldás idézőjelek semmire cserélésére? Legalább 200MB-os text file-on kell előadnom, és nem is egyszer, ezért magától értetődő, hogy a leggyorsabb módszert keresem.

A gépben egy 1.6GHz mobil pentium és 1,25GB memória van. OP rendszer windows, és linux-szerűségként cygwin van rajta.

Hozzászólások

sima cserére sima sed.

cat kvanagy.txt|sed -e 's/"//g' >jav_kvanagy.txt

további információ: man sed
Előtte nem árt a DOSos sortöréseket UNIXosra konvertálni, mert gondot okoz(hat)nak, bár még nem próbáltam.

Vagy: Wordpad (vagy CoolEdit vagy bármilyen _HASZNÁLHATÓ_ texteditor), Find/Replace menüpont, [X] Replace all.

Vagy a jo oreg Microsoft Word. Igenytelen, de barmit barmire lehet vele cserelni.

Köszönöm a sok hozzászólásokat, alkalomadtán ki fogom próbálni egyiket-másikat.

Notepad2-vel próbálkoztam egy darabig, de már a beolvasás alatt megállt a gép, szóval valami sorszerkesztős megoldást kerestem.

...majd tesztelek, ha muszáj.


cat idezojellel.txt | tr -d \" > nelkule.txt
real    0m14.691s
user    0m2.372s
sys     0m3.905s

cat idezojellel.txt | sed -e 's/"//g' > nelkule.txt
real    1m2.259s
user    0m49.240s
sys     0m3.584s

A vicc kedvéért kipróbáltam a simán képernyőre cat-elést:
cat idezojellel.txt
real    24m37.144s
user    2m41.331s
sys     5m2.404s

...és a másik file-ba cat-elést:
cat idezojellel.txt > nelkule.txt
real    0m14.981s
user    0m0.320s
sys     0m1.572s

A kérdés magától értetődő: Mi képes ugyanilyen rendszeren 10 másodperc alá szorítani a feldolgozási időt? :)))

Persze ki kéne próbálni rendesen linux alatt is, hátha még dob rajta egy kicsit a windows hiánya.

Semmi az égegyadta világon nem képes rá, kivéve talán valami ramdisk féleség. Linux alatt mondjuk egy ~400MB-os tmpfs mount és persze megfelelő (>512MB) ram a gépbe.
Ha megnézed a
cat idezojellel.txt | tr -d \" > nelkule.txt
eredményét, látod, hogy a user time csak 2.3 sec, míg a real time 14.7s A 2.3s-en lehetne csak gyorsítani. De ha megnézed a sima cat-olást, ott a real time 15s, ami véletlenül még éppen több is, mintha az "-eket kiszedted volna. (ennyire sok volt az " a bemenetben, hogy jelentősen kissebb lett a kimenet?)

Látható, hogy itt már nem az "-ek kiszedése határozza meg az időt, hanem az, hogy mennyire gyorsan tudja beolvasni és kiírni a fájlokat a merevlemezre. Ha utánaszámolunk, hogy 2x200MB adatot kell megmozgatni, (figyelmen kívül hagyva, hogy mindezt ráadásul egyszerre 2 külön fileban) mondjuk egy tipikus 40MB/s-es átviteli sebességgel számolva az rögtön 10 sec. Az ide-oda seekelés a két file között kiadja a további 5 sec-et.

Nem muszaj ram drive, csak ket egymastol fuggetlen kabelen logo winyo. Nagy mennyisegu adat feldolgozasanal ez a problema mindig elojon. pl hangsav kiszedese avi filebol: a proci rohogve megtudja csinalni, a winyok a szuk keresztmetszetek, persze mas a helyzet ide es scsi winyo eseten

Udv Zoli

Mit szólnál ahhoz a gyorsításhoz, hogy minden példádban kicszeded a tök fölösleges (és csak lassító) "cat file | " konstrukciót a feldolgozó parancs elől, és kicseréled egyszerű, fájlból jövő átirányításra (így: "< file" a parancs végére) ? (valahogy így: tr -d '"' > idezojeltelen.txt < idezojeles.txt)
(Ha csak le nem nyeli a kisebb-jeleimet)

C program:
-2*lefoglal mem-ben file-meret
-beolvas egyben (read, nem fread, win alatt is van: _read)
-pointerekkel vegig megy "-t kihagy, tobbit masol
-egyben kiir (write, nem fwrite, win alatt is van: _write)
-exit(0)

az io a szuk keresztmetszet

szerintem a cygwin iszonyatosan lassu win alatt ilyenre.

g