Nasvet za zmanjšanje časovne zahtevnosti...

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Volman
Prispevkov: 20
Pridružen: 13.02.2002 23:06:26

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a Volman » 18.05.2006 08:05:50

Zivjo!

Kot je napisano ze v naslovu teme, iscem le nasvet, kaj naj uporabim pri svojem problemu, da se bo vse skupaj odvilo v cimkrajsem casu.

Problem:
- v grobem opisano: imam graf funkcije (njene (x,y) koordinate), katerega moram primerjati s stevilnimi drugimi grafi (prav tako (x,y) koordinate) in z metodo najmanjsih kvadratov poiskati tistega, ki se od prvotne funkcije najmanj razlikuje.

- stvar pa izgleda takole: imam 25.000 funkcij, ki so zapisane v .asc datotekah (za vsako funkcijo ena datoteka), ki imajo okrog 2000 vrstic, vsaka vrstica pa ima zapisani koordinati x,y.
Vsako od teh funkcij moram primerjati s 70.000 drugimi funkcijami, zapisanimi v istem formatu.

Sedaj me zanima predvsem to, s cim naj se zadeve lotim. Samo racunanje in primerjanje me ne skrbi, to bo slo. Zaenkrat razmisljam v smeri, da bi vsako od opazovanih funkcij zaporedoma napolnil v array1 [1..2000,1..2], tistih 70.000 funkcij pa ob zagonu napolnil v array2[1..2000,1..140000], tako da bi potem primerjal array1[i,2] z array2[i,j]. Vem, da je array2 zaenkrat prevelika, vendar bi se to dalo skrajsati, saj so x-i naceloma enaki, tako da bi slo tudi z array1[1..2000] in array2[1..70000].
Je tak pristop v redu, ali se splaca zadevo narediti na drug nacin?

Upam, da sem bil dovolj razumljiv in pa ze vnaprej hvala za nasvet!

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a gabr » 18.05.2006 08:48:51

A si izračunal porabo pomnilnika?

Pozdrav,
Gp

=WinGpT= Take my advice, I don't use it anyway.
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

Volman
Prispevkov: 20
Pridružen: 13.02.2002 23:06:26

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a Volman » 18.05.2006 08:58:50

Hja, ne. Sam po moje bo velik. Sej to je pravzaprav tud stvar, ki sem jo hotu vprasat. Ce bom alociral tolk prostora za tabele zna bit p****

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a gabr » 18.05.2006 09:06:27

Ja, no, a znaš množit?

2000 * (25000 + 70000) * 8 (bajtov za eno realno vrednost) = 1.4 GB

Če imaš mašino z 2 GB pomnilnikom, potem bo načeloma šlo. Če so vrednosti funkcije cela števila, potem bo šlo še lažje.

Ampak narediti boš moral 25000 * 70000 = 1.750.000.000 primerjav. Pri vsaki primerjavi boš izračunal 2000 kvadratov razlik. Se pravi reda 10^12 kvadriranj.

Izmeri, koliko časa rabi tvoja mašina za primerjat dve funkciji (brez branja podatkov) - ali pa še bolje 1000 funkcij, da boš bolj natančen - potem si pa preračunaj na 25000 * 75000, koliko časa bo delal tvoj program.

Pozdrav,
Gp

=WinGpT= Health food makes me sick.
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

Volman
Prispevkov: 20
Pridružen: 13.02.2002 23:06:26

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a Volman » 18.05.2006 09:26:30

Ja, množit znam. :) Mal sem se narobe izrazu prej. Mene niti ne zanima, kolk časa bo delal. Kar se tiče števila operacij je tako ali tako jasno, bl me zanima al je postopek z array-i v redu, al bi bilo bolje v kaksno bazo dajat al kej podobnega. Kar se teh stvari tiče, pa res ne vem, katera zadeva je bolj hitra. Sej se vid, da sem se Delphi Busman! :(

Hvala

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a gabr » 18.05.2006 09:31:35

Postopek z arrayi je vsekakor v redu. Vsi drugi postopki so bistveno počasnejši.

To, da te ne zanima, koliko časa bo delal, je pa čudno. Boš čakal deset let, če bo treba?

Poskušam ti dopovedati, da gre za zelo veliko dela, in da je dobro, če ti je že vnaprej jasno, koliko časa bo delalo in koliko pomnilnika bo postopek potreboval.

Pozdrav,
Gp

=WinGpT= Kraljevic Marko? Naj gre spat!
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

Volman
Prispevkov: 20
Pridružen: 13.02.2002 23:06:26

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a Volman » 18.05.2006 10:35:26

Najlepsa hvala. Bom pogledal, kar se tiče časovne zahtevnosti, mal stestiru, potem bom pa videl. Ce bo treba, bom na vecih masinah zalaufou, druzga mi ne preostane!

Najlepsa hvala pa za opozorila.

LP

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a gabr » 18.05.2006 11:04:08

Oh, verjetno se da zgruntat kakšno finto, če bo zadeva prepočasna.

Ampak to je potem odvisno od tega, kakšne so funkcije.

Pozdrav,
Gp

=WinGpT= I have crossed and recrossed the line between sanity and
madness so many times that I have all but rubbed it out.
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

kuskus
Prispevkov: 277
Pridružen: 08.12.2002 17:27:44

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a kuskus » 18.05.2006 22:01:09

A Monte Carlo pristop odpade?

LP,
Kuskus

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Nasvet za zmanjšanje časovne zahtevnosti...

Odgovor Napisal/-a gabr » 18.05.2006 22:08:20

Monte Carlo ti pomaga, če lahko domeno nekako pametno posortiraš za začetek.

Tukaj je 70.000 funkcij, o katerih vemo samo to, da so tabelarično podane. Kako se boš tu Monte Carlal?

Pozdrav,
Gp

=WinGpT= All stressed up and no one to choke ...
OpenBSD SI: http://obsd.17slon.org, http://obsd.17slon.org/list

Odgovori