Bonjour,
C'est quoi une opération de lecture sur disque et comment je peux lancer un exemple d'une opération de lecture en utilisant C++?
Merci d'avance
Bonjour,
C'est quoi une opération de lecture sur disque et comment je peux lancer un exemple d'une opération de lecture en utilisant C++?
Merci d'avance
Hello,
Bah c'est une lecture sur disque... Comme un accès à un fichier.
Regarde du coté de std::fstream
Petit exemple rapide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //exemple.txt 1 4.2 blah // main.cpp #include <fstream> #include <string> #include <cmath> int main() { int i; double d; std::string str; std::ifstream is("exemple.txt"); is >> i >> d >> str; assert(i == 1); assert(std::abs(d - 4.2) < 1e-5); assert(str == "blah"); return 0; }
Merci pour votre réponse
Si je veux mesurer le temps consacré par le système pour réaliser une lecture, est ce que ce code est juste ? Ou je dois déplacer les instructions mesurant ce temps ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 int main() { double temps; clock_t start; start = clock(); ifstream fichier("exemple.txt"); char caractere; while(fichier.get(caractere)) temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC; fichier.close(); cout<<temps<<endl; system("PAUSE"); return 0; }
La lecture octet par octet ça risque d'être lent.
Sinon, il faut prendre le temps après la lecture, et pas à chaque itération (";" manquant ?).
C'est-à-dire le code devient :
Les résultats affichés changent d'une exécution à une autre (0.012 s, 0s...) et plusieurs fois me donne 0 seconde. Je veux un temps exacte pour une opération de lecture sur disque y'a t'il une autre manière pour avoir cette information?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 int main() { double temps; clock_t start; start = clock(); ifstream fichier("exemple.txt"); char caractere; while(fichier.get(caractere)) fichier.close(); temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC; cout<<temps<<endl; system("PAUSE"); return 0; }
Etant donné qu'au premier caractère lu tu refermes ton fichier, le résultat n'est pas surprenant.
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Et donc comment je peux savoir combien du temps a besoin une opération de lecture sur ma machine?
En fait, le temps de lecture dépend des circonstances.
Le disque dur lui même est très lent à lire: attendre que le fichier se présente devant la tête de lecture, puis prendre le temps de faire tourner le disque en lisant.
Du coup, tous les OS utilisent des systèmes de cache en mémoire des fichiers lus récemment.
En fait, les disques durs eux-même en font autant, dans une mémoire interne au disque.
Du coup, si tu lis le même fichier dix fois, normalement, seule la première lecture sera longue.
Pour comparaison, un processeur à 2GHz effectue une instruction addition en a peu près une nanoseconde.
Un disque dur, lui, tourne à l'ordre de la milliseconde, soit un million de fois plus lentement.
Mes principes de bases du codeur qui veut pouvoir dormir:Pour faire des graphes, essayez yEd.
- Une variable de moins est une source d'erreur en moins.
- Un pointeur de moins est une montagne d'erreurs en moins.
- Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
- jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
- La plus sotte des questions est celle qu'on ne pose pas.
le ter nel est le titre porté par un de mes personnages de jeu de rôle
Je ne sais pas si comparer un processeur (traitement) à un disque dur (stockage) est vraiment pertinent ...
leternel l'a d'ailleurs montré une instruction donnée s'exécute en un temps fixe alors qu'une opération de lecture, suivant le "point de vue" que l'on adopte, a un temps d'"exécution" variable. Rien que l'emplacement physique du fichier sur le disque a des impacts sur le temps de lecture.
D'ailleurs il faudrait définir ce qu'est une opération de lecture. Parce qu'un read de 1 octet et un read de 10 Mio sont tous les deux des opérations de lecture ... et pourtant le temps va énormément différer. On cherche à mesurer quoi là exactement ? La latence ? La bande passante ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager