Buffer, fichier, read et fread - C++ - Programmation
Marsh Posté le 18-06-2003 à 19:27:22
Mais j'y pense read/write n'est pas standardisé??? Ca fait du vieux standard Unix C...
Marsh Posté le 18-06-2003 à 22:14:44
et faire du C++, ça te dit? si oui laisse tombr tes cast à la con, et utilise les std::fstream
Marsh Posté le 18-06-2003 à 23:06:13
++Taz a écrit : et faire du C++, ça te dit? si oui laisse tombr tes cast à la con, et utilise les std::fstream |
Tiens j'y avais pas pense Les fstream (sur lesquels on a aucun controle) pour gerer un systeme de recovery, c'est tres moyen!
Cela dit, si les fstream se comportent comme mon 2), j'achete...
Marsh Posté le 18-06-2003 à 23:57:38
++Taz a écrit : ben heureusement que les fstream sont buferrises!!!! |
Pareil? ils gerent un systeme de page/cluster et on pas besoin d'aller charger une page sur le disque s'ils l'ont deja charge?
Oh putain, la revelation , toujours utilises sans me soucier du buffer (j'avais pas de prb de perf!)
Edit: Ben oui, je viens de me taper la specification...monstrueux!!
Marsh Posté le 19-06-2003 à 00:17:16
ouais mais regarde son nom, le gars c'est willyzekid quoi
Marsh Posté le 19-06-2003 à 06:11:06
++Taz a écrit : t'es completement à la masse toi... tu débarques d'ou? |
Cela dit, ca me donne pas beaucoup (suffisament?) de contrôle sur le buffer. Pour l'algorithme ARIES, il faut au minimum (!) que je sache ce qui est commited et ce qui ne l'ai pas. Or même en héritant de basic_filebuf et en le passant à mon fstream, je suis même pas sûr de pouvoir obtenir cette info.
Marsh Posté le 19-06-2003 à 07:50:12
ben de toutes façon aucun système te donnera cette assurance. si tu veux avoir un controle tres precis, sous linux par exemple, ben si tu recuperes le descripteur de fichier, tu peux faire ce que tu veux. tu peux aussi dimensionner la taille du buffer à ta guise. maintenant, je crois que t'as interet à utiliser une version standard bufferisé, par ce que je te sens pas du tout faire ta propre version
Marsh Posté le 19-06-2003 à 14:43:45
++Taz a écrit : ben de toutes façon aucun système te donnera cette assurance. si tu veux avoir un controle tres precis, sous linux par exemple, ben si tu recuperes le descripteur de fichier, tu peux faire ce que tu veux. (...) |
Le buffer est construit/géré par la STL ou la STL ne fait que reprendre le buffer et la stratégie de l'OS? Et quid de fwrite/fread?
Sinon existe-t-il une fonction (standardisé, on peut réver) qui permet d'accéder aux fichiers sans buffer?
Marsh Posté le 19-06-2003 à 14:49:19
ben tout dépend... de l'implémentation... tu peux meme avoir de fstream basé sur les FILE*. pour les acces non bufferisés fo voir avec ton OS. moi j'utiliserai sans crainte les fonctions standard bufferisés par ce que les performances n'ont un peu rien à voir.
Marsh Posté le 19-06-2003 à 16:57:18
Bon, c'est pas la joie....Je vais effectivement utiliser la STL dans un premier temps. Et peut-être créer un système de buffer autour de système call basiques si les inconvenients de la STL l'emportent sur le bordel que c'est d'écrire un truc portable et efficace (!!!!)
Dans l'état, je vois deux problèmes de la STL (j'indique l'état de mes recherche pour monter un peu le niveau de ce topic et pour aider d'autres personnes qui passeraient par là).
A titre d'info, voici une comparaison intéressante entre les différents moyen d'accés / librairies :
http://www.cs.utk.edu/~plank/plank [...] cture.html
Edit: pour rendre ce post un peu plus clair
Marsh Posté le 18-06-2003 à 19:00:56
Salut,
Une question pratique à deux balles. Je suis un train d'écrire un système de lecture/ecriture trés bas niveau (faut gérer un système de recovery pour une application critique) et j'hésite entre utiliser directement:
J'étais joyeusement parti sur read/write, en recréant un buffer quand je me suis aperçu que fread/fwrite avait mon buffer! Mais comme je cherche un code clean et optimisé pour mon utilisation, j'aimerais savoir de quel buffer on parle:
1) c'est juste un buffer pour regrouper les commandes?
2) le buffer est intelligent et si j'écris le code dessous, il n'ira pas faire d'accés disque pour le lire le contenu mais il s'apercevra qu'il a déjà ce que je lui demande dans son buffer?
(désolé pour les erreurs de code, c'est juste l'idée qui compte)
Merci de vos éclaircissements!
---------------
Horizon pas Net, reste à la buvette!!