Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Potrebujem poradit pri hladani stringu

Aktivity
Avatar
Tayson
Člen
Avatar
Tayson:21.11.2013 10:29

Zdravim uz som tu nieco porobne riesil ale potrebujem radu alebo nejake usmernenie ako dalej pretoze sa neviem pohnut z miesta. Mam nejaky textovy subor do ktoreho sa mi zapisuju logy. Tento textovy subor sa stale zaplnuje logami ak je to potrebne a moze mat velkost aj 200 MB. Ja z tohot textoveho suboru potrebujem vytiahnut v urcity okamih nejake data. Vyzera to nasledovne:

Class A

{

//nejaka trieda kde v cykle while bezi premenna ktora vycitava logy a zapisuje ich do premennej

while(true)

{

//tu sa to uklada do premennej log_string a rovno sa to zapisuje do textoveho suboru a vsetko tu funguje v poriadku

}

}

Toto by bolo v poriadku ale mam triedu druhu

Class B

{

// tu sa mi vykonava nejaky kod a tu potrebujem dane data analyzovat v urcity cas... vlastne tie logy posiela zariadenie a to zariadenie sa restartuje teda ho restartujem ja a po restarte to zariadenie vypise log ze sa restartovalo a ja od toho restartu potrebujem smerom hore cize na zaciatok prejst niektore stringy a skontrolovat data

}

Jeden moj napad bol taky ze som si z premennej v Class A spravil staticku a potom som si v Class B vytvoril metodu ktoru som spustal vo vlakne a vlastne tu staticku premennu som ukladal do Listu <> ale nefungovalo to uplne podla mojich predstav pretoze neboli tam vsetky data.

 
Odpovědět
21.11.2013 10:29
Avatar
Odpovídá na Tayson
Neaktivní uživatel:21.11.2013 10:34

je docela dobrá praktika ho po nějaké době vzít, přejmenovat třeba na log_x a pokračovat v zapisování do čistého logu, pak se bude hledat lépe ;)

Nahoru Odpovědět
21.11.2013 10:34
Neaktivní uživatelský účet
Avatar
Tayson
Člen
Avatar
Odpovídá na Neaktivní uživatel
Tayson:21.11.2013 10:42

No ale tak mal by som potom zbytocne vela suborov narobenych a malych a podla mna je to zbytocne

 
Nahoru Odpovědět
21.11.2013 10:42
Avatar
Martin Gabriel
Tvůrce
Avatar
Odpovídá na Tayson
Martin Gabriel:21.11.2013 10:58

Podle mě je zbytečné mít 200mb texťák. :-/
Stejně to jinak než přes pole nepřečteš od konce... a do statiky bych se moc nepouštěl.

Nahoru Odpovědět
21.11.2013 10:58
"Be the change you want to see in the world" - Michael Scofield
Avatar
Tayson
Člen
Avatar
Odpovídá na Martin Gabriel
Tayson:21.11.2013 11:08

A co je podla teba priatelskejsie ako 200 MB textovy subor ? potrebujem aby sa tie data zapisovali do nejakeho textoveho suboru aby si to vedel stale hoci kto otovorit a precitat

 
Nahoru Odpovědět
21.11.2013 11:08
Avatar
Martin Gabriel
Tvůrce
Avatar
Odpovídá na Tayson
Martin Gabriel:21.11.2013 11:15

Proč to vlastně nedáváš do databáze? To by bylo mnohem elegantnější.

Nahoru Odpovědět
21.11.2013 11:15
"Be the change you want to see in the world" - Michael Scofield
Avatar
Tayson
Člen
Avatar
Tayson:21.11.2013 11:22

No tak to mas pravdu ale zas by tam bolo velmi velke mnoztvo dat a ja potrebujem rychlejsi sposob zapisu a to je to textoveho suboru lepsie... ked ja ten textovi subor skomprimujem do .rar tak 200MB sa zmensi iba na 4MB a to by sa uz do operacnej pamate dalo nacitat... alebo pouzit iny format suboru pre zapis dat

 
Nahoru Odpovědět
21.11.2013 11:22
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Gabriel
Kit:21.11.2013 11:57

Zápis do databáze má obvykle mnohem vyšší režii právě proto, aby čtení bylo rychlejší. Logy se zapisují často, ale čtou jen občas. Proto je výhodnější optimalizovat zápis, tedy logovat do textového souboru.

Nahoru Odpovědět
21.11.2013 11:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Martin Gabriel
Tvůrce
Avatar
Odpovídá na Kit
Martin Gabriel:21.11.2013 12:35

To jsem netušil. Dík za objasnění. :)

Nahoru Odpovědět
21.11.2013 12:35
"Be the change you want to see in the world" - Michael Scofield
Avatar
Luboš Běhounek Satik:21.11.2013 13:08

Pokud ty logy chceš nějak zpracovávat, tak bych použil databázi.

200 MB už mi nepřijde jako moc optimální velikost pro "aby si to vedel stale hoci kto otovorit a precitat".

200MB na log je docela hodně, typicky má log soubor pár KB, max pár MB.
Co tam loguješ? Potřebuješ všechno co loguješ opravdu logovat? A pokud DB opravdu nevyhovuje, tak bych taky preferoval ty logy nějak logicky rozdělovat do více souborů.

Nahoru Odpovědět
21.11.2013 13:08
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:21.11.2013 13:47

Vždyzky záleží na tom, jak často do toho logu leze. Pokud několikrát za minutu, tak by textový soubor skutečně nebyl ideální, ale čtení 200 MB souboru trvá na mém Atomu 0,3 s, což není taková hrůza.

Nahoru Odpovědět
21.11.2013 13:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:21.11.2013 14:02

Máš disk s rychlostí čtení 666,666... MB/s? Pěkné :)

Mě šlo spíš o to zpracování dat, když je to v DB, tak zavolám jeden select, tady si to bude muset parsovat...

EDIT: Co to máš za disk? Mé SSD čte max 450 cca MB/s :(

Editováno 21.11.2013 14:06
Nahoru Odpovědět
21.11.2013 14:02
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Kit
Michal Žůrek - misaz:21.11.2013 14:16

prosím tě co to máš za SSD? Taky bych si ho koupil, jestliže reálná přenosová rychlost je opravdu tak vysoká

 
Nahoru Odpovědět
21.11.2013 14:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:21.11.2013 14:33

To bylo z diskové cache, ten soubor měl jen 1 GB a četl ho 1,3 s.

Nahoru Odpovědět
21.11.2013 14:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:21.11.2013 14:46

Co máš za disk, že máš diskovou cache velkou 1GB? Můj 2TB Seagate plotňák má diskovou cache jen 64MB :(

Nahoru Odpovědět
21.11.2013 14:46
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:21.11.2013 15:16

Disková cache v RAM. Mám 2 GB a systém 1 GB využil jako mezipaměť s diskem, protože ji v tu chvíli nepotřeboval.

Nahoru Odpovědět
21.11.2013 15:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:21.11.2013 15:22

Ale tam ten soubor běžně nemáš, pokud ho nepoužíváš nějak často :)

Nahoru Odpovědět
21.11.2013 15:22
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:21.11.2013 15:26

No jo, napoprvé to z disku četlo jen 100 MB/s, ale snad jsme se bavili o častém prohledávání, ne?

Nahoru Odpovědět
21.11.2013 15:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
mkub
Tvůrce
Avatar
mkub:21.11.2013 17:46

aby som to vysvetlil... Linux v skutocnosti vyuziva iba cast pamate RAM, zvysok vyuzitelnej RAM tvori CACHE disku, kam si nacitava otvarane subory, ale akonahle potrebuje viac pamate tak si pozicia potrebne mnozstvo z CACHE disku v RAM
to vsetko prebieha v ramci kernelu transparentne, uzivatel, si nicoho nevsimne

 
Nahoru Odpovědět
21.11.2013 17:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.