Zápis a čtení dat   zodpovězená otázka

VB.NET, I/O operace

Vytvářím program na analýzu všech možností polohy objektů v řetězci. Všechna řešení jsou číslována a potřebuju je zapsat do souboru txt tak, abych je mohl (podle čísla řešení) kdykoli načíst, ale vždy jen jednu kombinaci. S každým řešením pak potřebuju postupně dál pracovat. Počet řešení jsou miliony.

Data zapíšu, ale buď se mi přepisují řešení nebo je to jeden řetěz dat a neumím je odlišit pro čtení. Jsem spíš začátečník a nemohu se s tím nějak poprat. Používám VB2008. Dík za radu pro zápis i čtení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Osobně bych použil "interní" databazi, např. skvělý SQLite (http://sqlite.phxsoftware.com/) - má pár Kb a umí skoro celou SQL specifikaci.

Hovoříte o milionech záznamu a to si myslím, že nebudete nikdy rychlejší při práci s textakem než db.

P.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky. Ale stejně bych rád věděl, jak to napsat pro txt. Nakonec i čtení jednotlivých řešení bude probíhat max 1x za hodinu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Fakt bych se do toho přes texták nepouštěl:) DB má hledání záznamů optimalizováno a bude to tedy efektivní. Hledání přes texták bude trvat dlouho a budete mít také problémy s duplicitou záznamů apod. Můžete si samozřejmě pohrát se strukturami (B-tree), které to urychlí, ale myslím, že to je pro jiné programátory než my dva:)

Ale pokud chcete, můžete začít tímto:

http://msdn.microsoft.com/en-us/library/...

http://msdn.microsoft.com/en-us/library/...

http://msdn.microsoft.com/en-us/library/...

Jsou tam i pěkné příklady. Viděl jsem i ruzné parsery, ale myslím, že nic rychlejšího není. Ale nejsem si jistý.

P.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

dík

nahlásit spamnahlásit spam 0 odpovědětodpovědět

dalo by se použít XML, ale pro maximálně několik tisíc záznamů. Pokud těch záznamů budou, jak píšete miliony, tak databáze je jediné použitelné řešení

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hledat to přímo ze souboru bych spíš nedoporučoval, pokud je dat hodně a nevejdou se do paměti všechna najednou, pak určitě použijte databázi, na tyhle operace je optimalizovaná.

Pokud se data do paměti vejdou (dnes mají počítače řádově gigabajty paměti, takže to nemusí být problém, záleží na konkrétní situaci), pro rychlé vyhledávání není potřeba databáze, v .NETu máte třídu Dictionary, která by se na to dala velmi dobře použít. Doporučuji ji předem nadimenzovat na správnou velikost, standardně se totiž při přidávání prvků zvětšuje, když už jí místo nestačí, a to zvětšování zdržuje, protože se vlastně celá kopíruje někam jinam. Samotné vyhledávání bude velmi rychlé, používá se hashování.

Pokud máte řešení očíslovaná popořadě od 1 do n, pak je nejlepší držet to v poli, máte totiž rychlý indexovaný přístup.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den

Můžu se zeptat jak soubor nadimenzovat na správnou velikost?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback