Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2881 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  écrire avec un thread en binaire ou en ascii ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

écrire avec un thread en binaire ou en ascii ?

n°2119027
in_your_ph​ion
Posté le 02-01-2012 à 14:07:10  profilanswer
 

Bonjour,
 
Si un programme a un thread dédié à l'écriture de logs, le fait d'écrire en binaire ou en ascii change t-il quelque chose au niveau de la performance du programme ...?
 
merci par avance !
 

mood
Publicité
Posté le 02-01-2012 à 14:07:10  profilanswer
 

n°2119048
theshockwa​ve
I work at a firm named Koslow
Posté le 02-01-2012 à 16:37:11  profilanswer
 

ca dépend de tellement de choses ... Notamment de ton OS et de ton architecture, de la dépendance de ton programme à tes I/O
 
si ton programme utilise massivement des fichiers et que par "écrire des logs en ASCII plutôt qu'en binaire" tu veux dire écrire une quantité de données doublées, alors oui, ca aura un impact, même si tu es dans un autre thread.
 
Si ton programme est intensif sur un seul coeur sans avoir d'écritures disque et que tu as un autre coeur qui peut se charger de l'écriture des logs, alors ca ne te fera aucune différence.
 
En bref : on ne peut pas répondre à cette question à ta place, ca dépend entièrement de ton contexte.
 


---------------
last.fm
n°2119443
in_your_ph​ion
Posté le 04-01-2012 à 15:02:11  profilanswer
 

theshockwave a écrit :

si ton programme utilise massivement des fichiers et que par "écrire des logs en ASCII plutôt qu'en binaire" tu veux dire écrire une quantité de données doublées, alors oui, ca aura un impact, même si tu es dans un autre thread.


 
Hello,
si j'ai bien compris :
 
1- un cœur pour les logs et un autre pour autre chose => zéro différence
2- un cœur avec plusieurs threads dont l'écriture logs ascii/binaire => un impact
 
c'est ça ? dans le cas 2, pourquoi est ce que cela a un impact, c'est à cause du formatage des données ?
 
merci encore !

n°2119599
theshockwa​ve
I work at a firm named Koslow
Posté le 04-01-2012 à 23:52:20  profilanswer
 

non, tu n'as pas bien compris :)
Il n'y a pas de cas général sur la problématique dont tu parles. C'est ce qu'il y a à retenir. Le tip top, c'est de faire les deux implémentations et de mesurer la différence de perf dans ton contexte.
 
Quel que soit la performance au final, tu auras toujours une envie particulière. Quel est le gain, de ton point de vue, d'avoir du texte (lisibilité, possibilité d'éditer les fichiers à la main, ... ?) plutôt que du binaire, ou l'inverse (empêcher un utilisateur boulet de mettre les mains dans le fichier juste en le binarisant, ca peut avoir du sens)  
 
Le formatage des données en ascii peut prendre un peu de temps, c'est certain, mais en fonction du reste de ton programme, ca peut être tout à fait négligeable et n'altérer les performances, disons, que de 0.001%, je n'en sais rien.
 
Si tu te poses la question pour un fichier de quelques ko (même, quelques centaines de ko) que tu vas écrire ponctuellement, alors tu perds clairement ton temps à te poser ces questions.
 
Autre hypothèse : tu peux être dans un cas où tu as un soft qui brasse énormément de données sur le disque (soft de base de données sous une grosse charge ou que sais-je encore) et te poser la question de texte ou binaire pour un fichier de trace, avec ... disons ... 2Go de log en texte contre 1Go en binaire. Dans ce cas là, que tu aies plusieurs coeurs ou pas, il est probable que d'utiliser du texte ralentisse ton appli seulement parce que tu vas soumettre ton disque à plus forte contrainte, et ce, que tu sois en mono ou multi core.
 
Bref, implémente une version "basique" des deux solutions, même si elle couvre pas tous les détails, mais un truc qui te donne une idée dans les grande lignes et mesure les perfs, si tu dois vraiment te poser la question. Tu ne trouveras pas de réponse miracle.


---------------
last.fm
n°2119785
in_your_ph​ion
Posté le 05-01-2012 à 17:29:02  profilanswer
 

salut theshockwave!

 

Merci pour ta réponse et ces explications. Je parlais du cas 2 que tu cites, c'est à dire quand on a des gros logs, avec beaucoup d'écritures. Je pensais par exemple à un serveur qui écrit des logs des données reçues/envoyées (donc plusieurs centaines de mégas, voire gigas...). Je vois beaucoup ça dans l'industrie par exemple, les serveurs écrivent en binaires plutôt qu'en ascii pour les "nouvelles" générations.

 
theshockwave a écrit :


 Dans ce cas là, que tu aies plusieurs coeurs ou pas, il est probable que d'utiliser du texte ralentisse ton appli seulement parce que tu vas soumettre ton disque à plus forte contrainte, et ce, que tu sois en mono ou multi core.

 

Pourrais tu détailler ce que tu entends par "soumettre ton disque à plus forte contrainte" ? ce sont les accès au disque ? C'est cela qui ralentit la perf ?

 

merci


Message édité par in_your_phion le 05-01-2012 à 17:30:48
n°2131418
theshockwa​ve
I work at a firm named Koslow
Posté le 15-03-2012 à 00:06:27  profilanswer
 

Potentiellement, oui. Si tu as des acces concurrents intensifs a plusieurs gros fichiers, ta tete de lecture risque de jouer au yoyo.

 

Si tu manipules des Go de logs et que tu peux te permettre de fournir une appli pour les exploiter, alors ca peut valoir le coup de les faire en binaire ... peut etre :)


---------------
last.fm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  écrire avec un thread en binaire ou en ascii ?

 

Sujets relatifs
ecrire un programme (pascal) qui calcule X puissance n ?!!!Conversion en binaire et écriture dans un fichier
Boost::thread => perte de perfBesoin d'aide permutation binaire
[Divers/Ada] Ecrire pour un afficheur LCD sur Gnu/Linux et WindowsEcrire un nombre avec un séparateur décimal locale
[ Divers / C ] Ecrire pour un afficheur LCDException in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError
diagramme de decesion binaireVBA, creer et ecrire un fichier text (.txt) depuis un macro
Plus de sujets relatifs à : écrire avec un thread en binaire ou en ascii ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR