- szz blogja
- A hozzászóláshoz be kell jelentkezni
- 738 megtekintés
Hozzászólások
Ha jól értem, attól függ, hogy egy bejegyzés melyik fájlba kerül, hogy melyik fájlokban van benne. Ha az elsőben és a harmadikban, akkor megy az s1010-ba, igaz?
Én programot írnék rá, ami mind a négy fájlt egyszerre olvassa soronként, mindig a legkisebb kulcsot veszi ki az összes folyamból, ahol ez a kulcs van legelől. Ahol ez volt legelől, annak megfelelő mintájú kimeneti fájlba (folyamba) teszi a kulcsot. Tehát az összes kimeneti fájlt is egyszerre nyitnám meg, és írnám. Ezzel a módszerrel minden fájlt pontosan egyszer kell végigolvasni, és minden kimeneti bejegyzés CPU költsége annyi, amennyibe a négy elem sorbarendezése kerül - tehát lényegében semmi a végigolvasáshoz képest.
Ha a bemenet olvasását és a kimenet írását megfelelően (jó nagy, és a diszk blokkmérettel összhangban lévő blokkokat használva) puffereled, akkor a végrehajtás sebessége kb a diszk olvasás/íráséval lesz azonos.
- A hozzászóláshoz be kell jelentkezni
Jól érted a keletkezett fájlok megfeleltetését, igen!
Köszi az ötletet, kipróbáltam, és valóban lehet vele időt nyerni, nem is keveset. A mintafájljaimra 10 másodperc alatt lefutott ez, ami már változtatható számú halmazra is működik: http://pastebin.com/ZgDpwxRr
- A hozzászóláshoz be kell jelentkezni