[linux] Text processing (speed)...

Robert Varga nite na hq.alert.sk
Úterý Duben 10 15:17:06 CEST 2001


On Tue, Apr 10, 2001 at 10:33:32AM +0200, Peter Surda wrote:
> On Tue, Apr 10, 2001 at 07:11:31AM +0200, Jarry guru wrote:
> > Myslim, ze by bolo trosku rychlejsie, keby sa miesto noveho
> > vystupu radsej upravoval hned vstup, skratka nieco ako
> > "on-the-fly". Predsa len, kym mi vytvori 100MB subor (v ktorom
> > sa vymeni oproti povodnemu len zo 20 riadkov), to tiez nieco
> > trva. Ale ked som dal totozne $vstup a $vystup, potom ten subor
> > urobil prazdny.
> 
> No ked to spravis v Ccku alebo perle ako
> 
> open INPUT, "<file.dat" || die;
> open OUTPUT, ">file.dat" || die;
> while (<INPUT>) {
> 	s/string/string/g;
> 	print OUTPUT;
> }
> close OUTPUT;
> close INPUT;
> 
> Tak to spravi to co chces a sice preto lebo kym ten subor nezavries tak
> zostane alokovany na disku a da sa s nim pracovat.

Mas to vyskusane ? Pokial viem, tak sa subory zdielahu, a preto pokial
otvoris subor na write s O_TRUNC si fpazi (nulova dlzka suboru, nemas co
robit). Ak by to tak nebolo, veci ako file locking by nemali _ziadny_
vyznam.

> Na rychlosti to ale asi neprida ani miesta pocas konverzie tiez neusetris.

Moj skromny nazor:

Mas otvoreny ten isty subor, takze zmeny sa ti priamo prejavuju aj vo
vstupnum subore. Finta s otvorenym suborom plati len pri operaciach s
direntry (unlink, rename).

Takze akonahle vystup "predbehne" vstup, si fpazi -=> prepisujes si vstup.

Diskovy pristor, ktory potrebujes sa vobec nezmeni, rychlost by mala byt
vyssia, pretoze cache nieje tak zatazena (resp. len modifikujes uz
existujuci subor)

Priklad v Ccku, kedy by to malo ist: (mozno nepojde skompilit, pisem to z hlavy)

#include <fcntl.h>
int main()
{
	int ifd, ofd;
	char c[2];

	if ((ifd = open("subor", O_RDONLY)) < 0)
		return 1;
	if ((ofd = open("subor", O_WRONLY)) < 0)
		return 1;

	// vynechame kazdy druhy bajt
	while (read(ifd, c, 2) > 0)
		write(ofd, c, 1);
	
	close(ifd);
	ftruncate(ofd, lseek(fd, 0, SEEK_CUR));
	close(ofd);
}

-- 
Kind regards,
Robert Varga
------------------------------------------------------------------------------
n na hq.sk                                          http://hq.sk/~nite/gpgkey.txt
 
------------- další část ---------------
Netextová příloha byla odstraněna...
Jméno: [žádný popis není k dispozici]
Typ: application/pgp-signature
Velikost: 232 bytes
Popis: [žádný popis není k dispozici]
Url : http://lists.linux.sk/pipermail/linux/attachments/20010410/5424a060/attachment.bin 


Další informace o konferenci linux