• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

czas odczytu z pliku

Object Storage Arubacloud
0 głosów
189 wizyt
pytanie zadane 15 czerwca 2016 w C i C++ przez niezalogowany
Witam, jak szybki jest odczyt z pliku. hehe wiem, że jest wolny.  Ale ile zajmuje odczyt z pliku 100 linii tekstowych w porównaniu do odczytu zawartości tablicy stringów o rozmiarze 100. Nie chcę wartości liczbowych ale tak ogólnie. Czy jest możliwość przyśpieszenia odczytu z pliku (biorąc pod uwagę tylko kod typu sprawdź czy jest plik, odczytaj, przypisz, zamknij plik), oraz czy warto zapisywać wszystko w tablicy czy odczyt z pliku jest na tyle szybki by odczytać te 100 linii w rozsądnie krótkim czasie i by móc spokojnie zaoszczędzić pamięć RAM, a czas na tyle krótki tego odczytu by nie trzeba było czekać 1 sekundy i więcej (o rany... ale długo) na wczytanie wszystkiego i przypisanie wartości do zmiennych

4 odpowiedzi

0 głosów
odpowiedź 15 czerwca 2016 przez validator Nowicjusz (180 p.)
W większości przypadków, na które mogę wpaść wydajniejsze jest korzystanie z tablicy,. Nie wiem czy można przyśpieszyć odczyt z pliku, ale wykonywanie tego zadania w osobnym wątku jest dobrym pomysłem.
komentarz 15 czerwca 2016 przez niezalogowany
no tak, ale jeśli mam switcha który wyświetla wartości w zależności które wybrał użytkownik to wątek trochę słabo
0 głosów
odpowiedź 15 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
Możliwe, że ten link zaspokoi twoją ciekawość x)
http://stackoverflow.com/questions/17925051/fast-textfile-reading-in-c
komentarz 15 czerwca 2016 przez niezalogowany
muszę to na spokojnie przeanalizować
0 głosów
odpowiedź 15 czerwca 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Biorąc na zdrowy rozum to czytanie z pliku jest wolniejsze , ponieważ RAM =/= dyskowi. Po drugie nie da się ustalić jak szybko czyta lub zapisuje z dysku ponieważ inna ta prędkość bedzię na SSD a jeszcze inna na HDD i w dodatku jeszcze system plików coś tam nahahmęci w czasach. Po trzecie by zmierzyć takie czasy to potrzeba danych o wartości miliona znaków / miliona lini po znaku czy coś w tym stylu rząd musi być w milionach, a nie w setkach . Po 4 jak dobrze pamiętam działanie PC  z szkoły to i tak dane z dysku muszą trafić do RAMU potem do CPU. Po 5  jak chcerz zmierzyć czas jak działa odczyt / zapis  vs czytanie z RAMU. To zrób programiki na czytanie / zapis itd. i odpal na Linuxie poleceniem time ./nazwa pliku. W wyniku podane są 3 wartości sys,user,real jedna z nich to jest ile czasu zajmują operacje systemowi
–2 głosów
odpowiedź 15 czerwca 2016 przez Bondrusiek Maniak (61,370 p.)
edycja 15 czerwca 2016 przez Bondrusiek

Możesz sobie porównać używając tego kodu.

#include <iostream>
#include <time.h>
#include <fstream>

using namespace std;

int main()
{
    time_t start, koniec;
    double roznica;
    ifstream plik;
    plik.open( "plik.txt" );

    if( !plik.good() )
             return false;

    string wiersz;

    time( &start );

    while( getline( plik, wiersz ) ){
       //      cout << wiersz << endl;
}
    time( &koniec );
    roznica = difftime( koniec, start );;
    cout << "Czas plik : " << roznica << endl;
    plik.close();

    time( &start );
    char tab[100];
    for(int i = 0 ; i < 100 ; i++){
        wiersz = tab[i];
}
    time( &koniec );
    roznica = difftime( koniec, start );
    cout << "Czas tablica : " << roznica << endl;

    return 0;
}

 

komentarz 15 czerwca 2016 przez adrian17 Ekspert (344,860 p.)
Po pierwsze, pierwsza część tego kodu spędzi więcej czasu drukując tekst na konsolę niż czytając tekst z pliku, więc mierzenie tego jest do bani. Po drugie, time() ma precyzję sekundową. Po trzecie, nie inicjalizujesz tab[100], więc Twój kod jest technicznie błędny.

Ogólnie, mierzysz zupełnie różne i niezwiązane rzeczy.

Podobne pytania

+1 głos
0 odpowiedzi 248 wizyt
pytanie zadane 5 sierpnia 2016 w C i C++ przez Dawid679 Nowicjusz (130 p.)
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 14 lipca 2016 w C i C++ przez victordeleco2 Użytkownik (920 p.)
0 głosów
1 odpowiedź 184 wizyt
pytanie zadane 4 czerwca 2016 w C i C++ przez igor1988bb Użytkownik (800 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...