🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
17 messages
17 total messages Started by Zeus Sun, 16 May 2010 20:41
czytanie asynchroniczne pliku - proszę o pomoc
#21477
Author: Zeus
Date: Sun, 16 May 2010 20:41
17 lines
1369 bytes
//plik zapisany jako txt
text  text  // zbędny nagłówek
int  double // tylko double
int  double // tylko double
int  double // tylko double
//itd. do 800000 lini

MS VC#2008exp

Czy ktoś zechciał by udostępnić kawałek kodu. Ponieważ na temat jest 
bardzo mało przykładów a ja nie potrafię sobie poradzić z problemem.
Pliki są spore i jest ich dużo stąd pomysł o asynchronicznym czytaniu, 
jednak wykonanie w C# mnie chyba przerosło. Dlatego jeszcze raz proszę o 
pomoc i wyrozumiałość.

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21478
Author: Maciej Pilichowski
Date: Mon, 17 May 2010 06:20
11 lines
1304 bytes
On Sun, 16 May 2010 22:41:22 +0200, Zeus <s.zapasnik@cbk.poznan.pl>
wrote:

>Pliki s± spore i jest ich dużo st±d pomysł o asynchronicznym czytaniu, 

Asynchroniczne wobec czego -- pisania do nich?

milego dnia
-- 
Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
http://www.garaz.pol.pl/
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21480
Author: GrzybSon
Date: Mon, 17 May 2010 06:27
53 lines
2837 bytes
Użytkownik "Zeus" <s.zapasnik@cbk.poznan.pl> napisał w wiadomości 
news:4BF05872.5040305@cbk.poznan.pl...
> //plik zapisany jako txt
> text  text  // zbędny nagłówek
> int  double // tylko double
> int  double // tylko double
> int  double // tylko double
> //itd. do 800000 lini
>
> MS VC#2008exp
>
> Czy ktoś zechciał by udostępnić kawałek kodu. Ponieważ na temat jest 
> bardzo mało przykładów a ja nie potrafię sobie poradzić z problemem.
> Pliki są spore i jest ich dużo stąd pomysł o asynchronicznym czytaniu, 
> jednak wykonanie w C# mnie chyba przerosło. Dlatego jeszcze raz proszę o 
> pomoc i wyrozumiałość.
>
> Pozdrawiam
> S.Z.
>

Napisz najpierw co oznacza dla Ciebie asynchroniczne czytanie pliku i czemu 
zamierzasz czytać asynchronicznie?

Z tego co widzę to plik, których chcesz czytać ma ustaloną strukturę ale nie 
jest raczej XMLem więc chyba najlepiej tutaj skorzystać z
BinaryReadera:

BinaryReader br = new BinaryReader(new FileStream(FileName, FileMode.Open));

a potem np. do czytania inta czy doubla używasz funkcji br.ReadInt32() 
br.ReadDouble() itp.

Ogólnie plik jest wtedy potraktowany jako strumień danych, a wtedy możesz 
robić z nim różne rzeczy jak np. przesuwanie się do dowolnego miejsca w 
pliku. Nie musisz wtedy wczytywać całego pliku naraz do pamięci, lecz 
doczytywać potrzebne informacje na żądanie.

Można także potraktować plik jako tekstowy i wczytać całą zawartość pliku do 
pewnej struktury przy pierwszym odczycie pliku używając kodziku:

           // create reader & open file
            Textreader tr = new StreamReader("date.txt");

            // read a line of text
            Console.WriteLine(tr.ReadLine());

            // close the stream
            tr.Close();

-- 
Pozdro,
 Maćko 
Re: czytanie asynchroniczne pliku - prosz���������
#21479
Author: zeus
Date: Mon, 17 May 2010 07:43
14 lines
1695 bytes
Maciej Pilichowski pisze:
> On Sun, 16 May 2010 22:41:22 +0200, Zeus <s.zapasnik@cbk.poznan.pl>
> wrote:
> 
>> Pliki s± spore i jest ich dużo st±d pomysł o asynchronicznym czytaniu, 
> 
> Asynchroniczne wobec czego -- pisania do nich?

Są to moje pierwsze kroki w C#. Mam napisany program w C++ (chcę go 
przepisać na C#) tam używam Fstream  z BOOSTa potem już z górki. Tutaj 
nie bardzo łapię żeby się dało wszystko na raz czytać.

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21481
Author: zeus
Date: Mon, 17 May 2010 07:57
10 lines
1232 bytes
Wielkie dzięki za kod.

> Napisz najpierw co oznacza dla Ciebie asynchroniczne czytanie pliku i czemu 
> zamierzasz czytać asynchronicznie?
Ja rozumiałem to tak, że można uruchomić czytanie X-plików na raz. Pliki 
się czytają do X-vectorów a ja robię w kodzie coś innego np. rysuję 
przyciski itp.

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21482
Author: GrzybSon
Date: Mon, 17 May 2010 08:44
22 lines
1704 bytes

Użytkownik "zeus" <zeus@cbk.poznan.pl> napisał w wiadomości 
news:4BF0F6FD.1080500@cbk.poznan.pl...
> Wielkie dzięki za kod.
>
>> Napisz najpierw co oznacza dla Ciebie asynchroniczne czytanie pliku i 
>> czemu zamierzasz czytać asynchronicznie?
> Ja rozumiałem to tak, że można uruchomić czytanie X-plików na raz. Pliki 
> się czytają do X-vectorów a ja robię w kodzie coś innego np. rysuję 
> przyciski itp.
>
> Pozdrawiam
> S.Z.

No to musisz skorzystać z wielowątkowości i czytać każdy plik w osobnym 
wątku.
Co po przeczytaniu plików chcesz robić z tymi danymi?

-- 
Pozdro,
 Maćko 
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21483
Author: zeus
Date: Mon, 17 May 2010 09:11
12 lines
1325 bytes
> No to musisz skorzystać z wielowątkowości i czytać każdy plik w osobnym 
> wątku.
> Co po przeczytaniu plików chcesz robić z tymi danymi?
> 

Trzeba to wszystko policzyć (dane pomiarowe).
Liczenie zabiera sporo czasu - wielomiany.
Potem filtr i wyniki na wykres.
A potem można zapakować i wysłać do bazy centrum obliczeniowego.

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21484
Author: Karol Y
Date: Mon, 17 May 2010 13:34
16 lines
1757 bytes
> Trzeba to wszystko policzyć (dane pomiarowe).
> Liczenie zabiera sporo czasu - wielomiany.
> Potem filtr i wyniki na wykres.
> A potem można zapakować i wysłać do bazy centrum obliczeniowego.

Znając dokładniejszą specyfikacje Twojej "pracy", można by coś lepiej 
doradzić, a tak strzelam, że dane z tych plików potrzebne są do obliczeń 
niejako równolegle. Zgadza się?

W takim wypadku, do ich czytania nie potrzebna by była wielowątkowość. 
Chyba, że dane są na różnych (fizycznie) nośnikach, a szybkość obliczeń 
ewidentnie wskazuje na wzrost prędkości w przypadku zwiększenia 
szybkości odczytu danych.

-- 
Mateusz Bogusz
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21485
Author: GrzybSon
Date: Mon, 17 May 2010 13:46
25 lines
2107 bytes
Użytkownik "Karol Y" <karolyyy@o2.pl> napisał w wiadomości 
news:hsrfvs$brk$1@node1.news.atman.pl...
>> Trzeba to wszystko policzyć (dane pomiarowe).
>> Liczenie zabiera sporo czasu - wielomiany.
>> Potem filtr i wyniki na wykres.
>> A potem można zapakować i wysłać do bazy centrum obliczeniowego.
>
> Znając dokładniejszą specyfikacje Twojej "pracy", można by coś lepiej 
> doradzić, a tak strzelam, że dane z tych plików potrzebne są do obliczeń 
> niejako równolegle. Zgadza się?
>
> W takim wypadku, do ich czytania nie potrzebna by była wielowątkowość. 
> Chyba, że dane są na różnych (fizycznie) nośnikach, a szybkość obliczeń 
> ewidentnie wskazuje na wzrost prędkości w przypadku zwiększenia szybkości 
> odczytu danych.
>
> -- 
> Mateusz Bogusz

Przecież kolega napisał, że chce czytać x-plików na raz czyli jednocześnie. 
To jak to zamierzasz rozwiązać bez wątków?

-- 
Pozdro,
 Maćko 
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21486
Author: Rafał R Prasał
Date: Mon, 17 May 2010 15:36
10 lines
1470 bytes
W dniu 2010-05-17 15:46, GrzybSon pisze:
> [...]
> Przecież kolega napisał, że chce czytać x-plików na raz czyli jednocześnie.
> To jak to zamierzasz rozwiązać bez wątków?

Szeregowaniem odczytów?. Wczytujesz porcję danych, przetwarzasz 
wczytujesz porcję z innego pliku, przetwarzasz i tak w kółko.


Rafał Prasał.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21489
Author: Maciej Pilichowski
Date: Tue, 18 May 2010 06:27
17 lines
1702 bytes
On Mon, 17 May 2010 09:57:49 +0200, zeus <zeus@cbk.poznan.pl> wrote:

>Ja rozumiałem to tak, że można uruchomić czytanie X-plików na raz. Pliki 
>się czytaj± do X-vectorów a ja robię w kodzie co¶ innego np. rysuję 
>przyciski itp.

Mozna, ale nie warto. Odczyt i tak sie bedzie blokowal, bo procesor
jest szybszy niz dysk twardy (nawet SSD). Zrob to szeregowo i pozniej
sprawdz, co jest waskim gardlem.

Skoro nawet nie zaczales, optymalizacja na tym etapie jest mocno
przedwczesna.

milego dnia, hej
-- 
Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
http://www.garaz.pol.pl/
Re: czytanie asynchroniczne pliku - prosz���������
#21491
Author: zeus
Date: Tue, 18 May 2010 07:11
14 lines
1595 bytes
> Mozna, ale nie warto. Odczyt i tak sie bedzie blokowal, bo procesor
> jest szybszy niz dysk twardy (nawet SSD). Zrob to szeregowo i pozniej
> sprawdz, co jest waskim gardlem.
> 
> Skoro nawet nie zaczales, optymalizacja na tym etapie jest mocno
> przedwczesna.

Mam program działający napisany w C++ a interfejs w C++CLI(rysowanie 
wykresu i wstępne ręczne filtrowanie) i chciałem przepisać na C#. 
Dlatego szukam miejsc gdzie można przyspieszyć no i przy okazji nauczyć 
się C#.

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - prosz���������
#21488
Author: Karol Y
Date: Tue, 18 May 2010 16:28
11 lines
1560 bytes
> Mam program działający napisany w C++ a interfejs w C++CLI(rysowanie
> wykresu i wstępne ręczne filtrowanie) i chciałem przepisać na C#.
> Dlatego szukam miejsc gdzie można przyspieszyć no i przy okazji nauczyć
> się C#.

A te kody są tajne, czy bez oporów byś dał popatrzeć? Po prostu pytam. 
Bo łatwiej by było jakby chociaż jakiś pseudo-algorytm zobaczyć co się 
tam dzieje, to moglibyśmy dyskutować co poprawić.

-- 
Mateusz Bogusz
Re: czytanie asynchroniczne pliku
#21492
Author: Zeus
Date: Tue, 18 May 2010 20:33
11 lines
1483 bytes
> A te kody są tajne, czy bez oporów byś dał popatrzeć? Po prostu pytam. 
> Bo łatwiej by było jakby chociaż jakiś pseudo-algorytm zobaczyć co się 
> tam dzieje, to moglibyśmy dyskutować co poprawić.

Program pobiera dane i liczy. Niestety kodów liczących nie mogę pokazać 
bo to praca zespołu musiałbym mieć zgodę. Te dane po obróbce są 
wykorzystywane do liczenia pozycji i prędkości punktu na ziemi z 
dokładnością 1mm XYZ (geodezja satelitarna).

Pozdrawiam
S.Z.
Re: czytanie asynchroniczne pliku - proszę o pomoc
#21487
Author: 3P
Date: Thu, 20 May 2010 18:27
28 lines
2146 bytes
Dnia 17-05-2010 o 15:46:13 GrzybSon <mrychter@kenbit.pl> napisał(a):

> U¿ytkownik "Karol Y" <karolyyy@o2.pl> napisa³ w wiadomo¶ci
> news:hsrfvs$brk$1@node1.news.atman.pl...
>>> Trzeba to wszystko policzyæ (dane pomiarowe).
>>> Liczenie zabiera sporo czasu - wielomiany.
>>> Potem filtr i wyniki na wykres.
>>> A potem mo¿na zapakowaæ i wys³aæ do bazy centrum obliczeniowego.
>>
>> Znaj±c dok³adniejsz± specyfikacje Twojej "pracy", mo¿na by co¶ lepiej
>> doradziæ, a tak strzelam, ¿e dane z tych plików potrzebne s± do obliczeñ
>> niejako równolegle. Zgadza siê?
>>
>> W takim wypadku, do ich czytania nie potrzebna by by³a wielow±tkowo¶æ.
>> Chyba, ¿e dane s± na ró¿nych (fizycznie) no¶nikach, a szybko¶æ obliczeñ
>> ewidentnie wskazuje na wzrost prêdko¶ci w przypadku zwiêkszenia  
>> szybko¶ci
>> odczytu danych.
>>
>> --
>> Mateusz Bogusz
>
> Przecie¿ kolega napisa³, ¿e chce czytaæ x-plików na raz czyli  
> jednocze¶nie.
> To jak to zamierzasz rozwi±zaæ bez w±tków?
>

A o FileStream.BeginRead panowie słyszęli!?
Re: czytanie asynchroniczne pliku
#21490
Author: Karol Y
Date: Thu, 20 May 2010 22:21
15 lines
1734 bytes
>> A te kody są tajne, czy bez oporów byś dał popatrzeć? Po prostu pytam.
>> Bo łatwiej by było jakby chociaż jakiś pseudo-algorytm zobaczyć co się
>> tam dzieje, to moglibyśmy dyskutować co poprawić.
>
> Program pobiera dane i liczy. Niestety kodów liczących nie mogę pokazać
> bo to praca zespołu musiałbym mieć zgodę. Te dane po obróbce są
> wykorzystywane do liczenia pozycji i prędkości punktu na ziemi z
> dokładnością 1mm XYZ (geodezja satelitarna).

No tak, a z technicznego punktu widzenia, to ze wszystkich plików jakaś 
"paczka" danych jest potrzebna do wykonania obliczenia, czy każdy plik 
może być liczony osobno?

-- 
Mateusz Bogusz
Re: czytanie asynchroniczne pliku
#21493
Author: Zeus
Date: Fri, 21 May 2010 19:27
14 lines
1689 bytes
> No tak, a z technicznego punktu widzenia, to ze wszystkich plików jakaś 
> "paczka" danych jest potrzebna do wykonania obliczenia, czy każdy plik 
> może być liczony osobno?
> 

Muszą być co najmniej dwa pliki dla (jeden wątek) jednej operacji 
liczenia i muszę je mieć w całości w vectorze (min, max, wartość 
początkowa, końcowa, sortowanie). Wątkowanie sporo mi przyspieszyło program.
Czy można jeszcze przyspieszyć na razie nie wiem, sprawdzam czy działa w 
CLI i przenoszę do C#. Teoretycznie działa poprawnie tzn. jeszcze się 
nic nie wali. Jak będą problemy to będę dopytywał

Pozdrawiam
S.Z.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads