Estimer la taille d’un fichier texte

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Dans le cadre d’un projet associatif, je dois déterminer quel stockage doit-on embarquer dans notre projet.

J’aimerais donc savoir quelles sont les methodes pour déterminer ça ? Quelle taille minimale le stockage doit-il faire ? Quelle vitesse d’ecriture ?

Le projet est une arduino qui récupère des donnés depuis des capteurs (54 données) toutes les secondes et qui écrit un fichier csv toutes les minutes contenant ces données pendant environ 2 a 3h. Ces données inclues 1 integer et 53 doubles.

Merci pour votre aide !

Salut,

Pour moi, la méthode la plus simple est tout simplement de compter.

Tu peux commencer par calculer la taille d’un enregistrement de tes 54 données en estimant le nombre de caractères nécessaires pour chacune d’entre-elles et les séparateurs. Ensuite, tu comptes le nombre de secondes sur ta période de temps et en multipliant, tu auras environ la taille en caractères, qui te donnera la taille en kilooctets très facilement en fonction de ton encodage.

Pour ce qui est de la vitesse d’écriture, ça correspond à un débit de données. Tu peux calculer la moyenne avec la taille totale divisée par le temps total.

Je connais pas trop la vitesse d’écriture sur Arduino, mais je serai étonné que tu sois limité. Pour ce qui est du stockage, ça peut devenir serré si tu as très peu de mémoire. Faut que tu fasses le calcul, mais j’ai l’impression que sur Arduino, ça va être trop juste, sauf si tu peux étendre le stockage (genre carte SD). Autrement, il reste des possibilités comme faire des compromis sur la précision des nombres, penser à autre chose que le CSV ou encore comprimer, ce qui peut réduire drastiquement le stockage nécessaire.

Faut que tu fasses attention à la RAM aussi, ça peut très vite devenir serré si tu stockes beaucoup de données avant l’écriture.

Merci pour ta réponse.

Le but est, et j’ai oublié de l’écrire, de stocker toutes ces données sur une carte SD. J’avais pensé justement à compter mais je ne sais pas trop comment m’y prendre. Prenons le cas pour un double. Je sais qu’il occupe en mémoire 8 octets. Il faut ensuite le convertir en chaîne de caractères (qui occupe beaucoup plus de place). Je n’ai besoin que de la table ASCII donc chaque caractère s’écrit sur 1 octet. Ça signifie que chaque chiffre de mon double occupe 1 octet. Le problème est de savoir combien de chiffre mon double peut avoir ?

Je sais que mon integer peut aller de 0 à 4 294 967 295 donc il peut occuper au maximum 10 octets (je viens de tester et Linux me donne 11 octets, est-ce toujours plus 1 pour la création d’un fichier ? D’où vient-il ?)

Ma virgule, quant à elle, ne prend qu’un seul octet.

Merci encore pour ton aide !

EDIT : J’avais oublié qu’à la fin d’une ligne de CSV il y avait un saut de ligne. Compte t-il comme 1 octet (\n) ?

+0 -0

Salut,

EDIT : J’avais oublié qu’à la fin d’une ligne de CSV il y avait un saut de ligne. Compte t-il comme 1 octet (\n) ?

Oui. Compare la taille du fichier créé par echo 123 > test et echo -n 123 > test (qui omet le saut de ligne final).

Le problème est de savoir combien de chiffre mon double peut avoir ?

24 caractères en notation scientifique sans perte de précision, il te manque plus que le caractère séparateur.

Pour un double, c’est toi qui choisis le nombre de caractère que tu stockes. Tu dois bien connaître la gamme de valeurs et le nombre de chiffres que tu veux stocker, non ?

Aabu

J’ai demandé à l’équipe de me donner ces valeurs. J’aurais un résultat plus précis à ce moment là.

24 caractères en notation scientifique sans perte de précision, il te manque plus que le caractère séparateur.

adri1

Merci ! Donc en prenant ce 24 caractères en pire cas possible, j’obtiens 14,41829 Mo de données pour 3 heures de mission. Donc on tient largement sur une carte SD !

Merci encore pour votre aide, j’attends les gammes exactes des valeurs pour avoir un calcul plus précis mais déjà dans le pire des cas on est bon. :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte