Kezdőoldal » Számítástechnika » Programozás » Milyen nyelven és milyen...

Milyen nyelven és milyen hardverrel érdemes megcsinálni ezt a feladatot, hogy a leggyorsabb legyen?

Figyelt kérdés

Adva van egy alkönyvtár, faszerkezettel, benne fáljok, képek is, elszortan. Kb ezer kép, kb. 3000 más fájl.

Legyen ez "A" alkönyvtár.


Adva van egy másik alkönyvtár, de abban faszerkezet nélkul, csak képek, kb. 10 000 kép.

Legyen ez "B" alkönyvtár.


A végcél az, hogy ebben a 10 000 db-os alkönyvtárban szétválassza a képeket alkönyvtárakba.

1-es alkönyvtárba azt, ami nem szerepel a B alkönyvtárba, de megfelel bizonyos szabványnak. (pl. a fálj nevének a tizedik betuje csak "z" lehet, a kiterjesztése meg jpg.

2-es ugyanez, de png.


2020. máj. 7. 11:13
1 2 3
 11/25 A kérdező kommentje:
"Azért nem mindegy, hogy 1-200 MB/sec-kel töltöd be a képeket vagy 1-2 GB/sec-kel... a mai modern SSD-k nagyon gyorsak.. nyilván megfelelő csatolóval, nem SATA" m.2-re gondolsz? ugy tudom azzal megoldhato a "normál" ssd sebességének 8-szorosa ha filemuveletekről van szo. jol tudom, hogy raid0-ban még ennek is duplázodik a sebessége?
2020. máj. 7. 13:13
 12/25 A kérdező kommentje:

"A betöltést egysszerűen párhuzamosíthatod, szóval jobb a az proci ami többszálú mint amelyik kevesebb, de szálanként gyorsabb. (Nyilván megfelő paraméterek esetén)"

4 magos 3.3 GHz-s I5, 4 giga rammal amibe lényegében csak a fájlok elérési utjait lehetett szövegesen betölteni hogy legalább annak a kiolvassását ne HDD-ről kelljen uja meg ujra. De ezt meg minden alkalommal ujra megtettem ahogy lépkedtem a félmillio fáljal, mert igy egyre kevesebbett kellett átvizsgálnia. De le se lett mérve hogy mi a jobb, az ujboli betöltés, vagy az elérési utak törlése a textből, ha egy egy kép kisesik a félmilliobol valamelyik egyezőség esetén. Ezzel lett félmillio és 300 képpel 10 nap. Asszem ez ma már gyengének számító konfig. És hevenyészett algoritmus, az is magasszintu nyelvel.

2020. máj. 7. 13:24
 13/25 anonim ***** válasza:

1. Egy kis problémát látok a feltételek elején:

"A végcél az, hogy ebben a 10 000 db-os alkönyvtárban szétválassza a képeket alkönyvtárakba."

Ez ugye a "B" alkönyvtár lenne, ez rendben van, ezt szeretnéd rendezni (1,2,3,4,5,6,7,8,9,....) al-alkönyvtárakra.


"1-es alkönyvtárba azt, ami nem szerepel a B alkönyvtárba"

Nem inkább az "A" alkönyvtárban (az ezer képet tartalmazó) való szereplést vizsgálnád?


2. Önmagában - ha a feladatot ritkán kell elvégezni - ez egy szimpla shell-/batch-szkript (tényleg: ez milyen környezetben történne? Linux? Windows? MacOSX?) feladat:

a. létre kell hozni - ha még nem lennének - a "B" alkönyvtáron belül az al-alkönyvtárakat

b. fogni kell az "A" alkönyvtár képállományainak (adott kiterjesztésű állományok) listáját és eltárolni egy tömbben

c. fogni kell a "B" alkönyvtár (rekurzió nélkül, az al-alkönyvtárak kihagyásával) képállományainak (adott kiterjesztésű állományok) listáját és végigiterálni rajta

* ha az aktuális elem nem szerepel az "A" alkönyvtár állományai között (szóval nem szerepel a b. pontban létrehozott tömbben), akkor le kell ellenőrizni az adott állomány nevét (szerepel-e benne adott betű - ez egy szimpla reguláris kifejezés-kiértékeléssel eldönthető) vagy hogy adott kiterjesztéssel rendelkezik-e, majd az ellenőrzés eredményeképp át kell helyezni az adott al-alkönyvtárba


3. A gondot a képek összehasonlítása okozza.


Kérdés az, hogy lehet-e különbség a kép irányában (szóval van egy kép egy akármiről, amit elforgatok az óramutató járásával megegyező irányban 90 fokkal, akkor az ugyanaz a kép-e), méretében, tömörítettségében/minőségében.


Ha lehet, akkor az állomány szimpla (MD5, SHA,...) ellenőrzőösszeg-képzésével megoldható a probléma.

Ha nem, akkor a kép tartalmát kell vizsgálni és abból ellenőrző-összeget generálni:

[link]


Mindez beilleszthető az előző pontban említett parancssoros szkript c. pontjába (csak az ellenőrzőösszeg-képzéshez kell egy parancssoros alkalmazás):

a. Az iteráció előtt létre kell hozni egy tömböt - ez fogja tárolni az áthelyezett képek ellenőrzőösszegeit és az áthelyezésre szánt al-alkönyvtárak neveit

b. Képezni kell a "B" alkönyvtár adott képének ellenőrzőösszegét és az áthelyezésre szánt al-alkönyvtár nevét. Ha ezek megtalálhatóak az előző pontban található tömbben, akkor a kép már át lett helyezve, nem mozgatjuk. Ha nem található meg, akkor átmozgathatjuk, de eltároljuk a kép ellenőrzőösszegét és az al-alkönyvtár nevét az előző pontban található tömbbe.


4. Ha a képek gyakran frissítődnek, akkor már valami összetettebb program kell: az előző pontban említett tömböket valamilyen adatbázisba rakni (abban gyorsabb keresni, mint a fájlrendszert adott időnként újra és újra végigellenőrizni); illetve erre valami daemon-t kreálni, ami folyamatosan figyeli a "B" alkönyvtárba kerülő új állományokat.

2020. máj. 7. 14:18
Hasznos számodra ez a válasz?
 14/25 anonim ***** válasza:
63%

Ha 10 napig futott, akkor ez az algoritmus hibája, nem a hardveré. Számolj minden képre hash-t (nem az eredeti fájl bájtjaira, hanem a kitömörített pixlekekre, ha ez a feltétel) Utána baromi gyors az összehasonlítás, nem lehet gond fél millió kép, mivel ez kb 10 megabájt.


Persze ha a hash egyezik, akkor utána célszerű öszsehasonlítani a képeket is, mert nagyon nagyon nagyon kis valószínűséggel akár lehet is ütközés (de nem lesz), de ez egyetlen összehasonlítás, ha jól értem a feladatot. Ha van találat, akkor nem kell tovább menni. A "nem egyező" képek hamar kiesnek a hash különbség miatt.


Szóval vehetsz erős hardvert, de minek, mikor ez egy könynen megoldható feladat? Oké, fizetni kell egy programozót, aki leprogramozza neked pár nap alatt.

2020. máj. 7. 14:38
Hasznos számodra ez a válasz?
 15/25 anonim ***** válasza:

"m.2-re gondolsz?"


m.2-re pl... de abból is van SATA... szóval nem m.2 SATA, hanem m.2 nvme... Az m.2 csak a fizikai csatlakozó méret.

2020. máj. 7. 14:40
Hasznos számodra ez a válasz?
 16/25 anonim ***** válasza:
A feladat erőforrásigénye attól függ, hogy hogy definiálod, hogy két kép megegyezik. Ha bájtról bájtra meg kell egyeznie, akkor a feladat nagyon egyszerű, ha viszont megegyezőnek definiálod az ugyanarról a képről készült, de eltérő felbontású, vagy eltérő mértékben tömörített képeket is, akkor iszonyú bonyolult.
2020. máj. 7. 21:58
Hasznos számodra ez a válasz?
 17/25 A kérdező kommentje:

"1-es alkönyvtárba azt, ami nem szerepel a B alkönyvtárba"


Nem inkább az "A" alkönyvtárban (az ezer képet tartalmazó) való szereplést vizsgálnád?



Igen ezt elírtam,elnézést.



Windows-t használok.

A mostani program egyszeruen csak spcritként beolvassa a képeket majd a == feltétellel megnézi, hogy a két szcrit egyforma e. hogy ez a gyakorlatan hogy megy nemtudom, de programirás szempontjábol ez történik.


bittérképről van szo vagyis méret, felboontás váltás esetén másik képről van szo. ez is a másik gond, történik olyan, hogy a kép egy része levágásra kerul, s akkor a képnek egy részlete marad csak meg. de ez nem gond, mert bekerul az 1000 közé, mindkettő s ha egy másolata valahol megmarad bármelyiknek, akkor az már máshová lesz rakva.

2020. máj. 7. 23:18
 18/25 anonim ***** válasza:

Nem azért, de ha csak fájlnév és a kiterjesztés szerint kell szétválogatni a képeket, akkor ez egy egyszerű másolás.


A duplikátumok kiszűrése egy hash vizsgálat.


Ebben semmi olyat nem látok, amiért elő kellene venni a visual studiot vagy akármilyen fejlesztőkörnyezetet. Ez tipikus scriptnek való feladat. Azt sajnálom csak, hogy Windows-t írtál környezetnek.

2020. máj. 8. 00:01
Hasznos számodra ez a válasz?
 19/25 A kérdező kommentje:
elirtam, stringként olvassa be
2020. máj. 8. 00:30
 20/25 anonim ***** válasza:
100%
Ezek után azt mondom, hogy neked nem erősebbb hardver vagy másikm rogramnyelv kell, hanem egy jobb algoritmus.
2020. máj. 8. 07:23
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!