Aujourd'hui, ne ne voit que les points suivants sur lesquels le binaire
peut s'avérer intéressant :
[..]
Comme l'a dit Fabien, quand les fichiers comment à dépasser le mega, le
binaire devient très intéressant. Au boulot on manipule "à la main" des
données ASCII (pratique pour les tests, etc...) mais une fois que c'est ok,
on passe le tout à la moulinette -> binaire. Ca réduit la taille par ~10,
et
le temps de chargement par XXX (convertir des millions de nombres flottants,
c'est long !)
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Aujourd'hui, ne ne voit que les points suivants sur lesquels le binaire
peut s'avérer intéressant :
[..]
Comme l'a dit Fabien, quand les fichiers comment à dépasser le mega, le
binaire devient très intéressant. Au boulot on manipule "à la main" des
données ASCII (pratique pour les tests, etc...) mais une fois que c'est ok,
on passe le tout à la moulinette -> binaire. Ca réduit la taille par ~10,
et
le temps de chargement par XXX (convertir des millions de nombres flottants,
c'est long !)
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Aujourd'hui, ne ne voit que les points suivants sur lesquels le binaire
peut s'avérer intéressant :
[..]
Comme l'a dit Fabien, quand les fichiers comment à dépasser le mega, le
binaire devient très intéressant. Au boulot on manipule "à la main" des
données ASCII (pratique pour les tests, etc...) mais une fois que c'est ok,
on passe le tout à la moulinette -> binaire. Ca réduit la taille par ~10,
et
le temps de chargement par XXX (convertir des millions de nombres flottants,
c'est long !)
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
On Thu, 19 Aug 2004 20:31:29 +0200, Loïc Joly
:Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Si une telle situation est fréquente, le format est mal choisi.
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
Sur mon petit PC (Athlon XP 2000+), la compression en ZIP (un des
formats les plus rapides) d'un fichier texte de 10 Mo demande 4
secondes, soit environ 2 Mo/s.
En se basant sur ce petit test, et aussi un peu sur mon expérience, je
dirais que compresser pour enregistrer sur un disque dur local (20
Mo/s minimum) ralentit sérieusement l'enregistrement, mais si ça doit
passer par un réseau, la question se pose (sauf peut-être sur un 100
Mbps très peu chargé) -- et il faut faire des tests plus précis.
On Thu, 19 Aug 2004 20:31:29 +0200, Loïc Joly
<loic.actarus.joly@wanadoo.fr>:
Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Si une telle situation est fréquente, le format est mal choisi.
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
Sur mon petit PC (Athlon XP 2000+), la compression en ZIP (un des
formats les plus rapides) d'un fichier texte de 10 Mo demande 4
secondes, soit environ 2 Mo/s.
En se basant sur ce petit test, et aussi un peu sur mon expérience, je
dirais que compresser pour enregistrer sur un disque dur local (20
Mo/s minimum) ralentit sérieusement l'enregistrement, mais si ça doit
passer par un réseau, la question se pose (sauf peut-être sur un 100
Mbps très peu chargé) -- et il faut faire des tests plus précis.
On Thu, 19 Aug 2004 20:31:29 +0200, Loïc Joly
:Ca peut dépendre des données. Si 90% des tes doubles valent 0,
Si une telle situation est fréquente, le format est mal choisi.
Dans un cas comme ça compresser fait gagner d'un côté (taille) mais perdre
de l'autre (temps : en plus de la conversion très longue, y'a la
compression/decompression).
Je n'en suis qu'à moitié sur, et comme dans tous ces cas, il n'y a que
la mesure qui compte.
Sur mon petit PC (Athlon XP 2000+), la compression en ZIP (un des
formats les plus rapides) d'un fichier texte de 10 Mo demande 4
secondes, soit environ 2 Mo/s.
En se basant sur ce petit test, et aussi un peu sur mon expérience, je
dirais que compresser pour enregistrer sur un disque dur local (20
Mo/s minimum) ralentit sérieusement l'enregistrement, mais si ça doit
passer par un réseau, la question se pose (sauf peut-être sur un 100
Mbps très peu chargé) -- et il faut faire des tests plus précis.
Comme on te l'as dit, non seulement reinterpret_cast n'est pas
nécessaire, mais en plus, c'est une erreur de l'utiliser dans ce
contexte. Il faut définir mauellement le format binaire que l'on
soihaite avoir, puis convertir nos données en tableau de char selon
cette définition.
C'est une tâche assez laborieuse, surtout quand on ne vise pas la
portabilité et qu'on est assuré que le format du fichier et le format
interne sont les mêmes, ce qui est mon cas.
Dans cette situation, est-ce acceptable d'utiliser reinterpret_cast ?
Cette fonction template avait juste pour but d'alléger l'écriture.
fwrite accepte un void *, pourquoi ostream::write ne fait pas de
même ?
Parce qu'elle accepte un char*, et que autant je sais ce qu'écrire
un char veut dire, autant j'ignore ce que peut vouloir dire écrire
un void.
Ben fwrite le sait bien elle...
Mais bon je saisis un peu mieux le truc, ce que j'ai enfin compris
c'est qu'il faut écrire sa routine qui sérialise ses données en un
tableau de char. Ce que je trouve "aberrant" (vous aurez compris que
ce mot était volontairement trop fort et avait pour but de susciter
des réactions ;-) c'est qu'il n'y ait rien dans la SL qui guide le
programmeur dans ce sens, genre une fonction write templatée qui
accepte/appelle un serialiser, ou des fonctions d'aide à la
sérialisation, ou autre chose.
Je trouve que c'est pas évident du tout qu'il faille procéder ainsi,
et j'ai peur de ne pas être le seul. Existe-t-il quelque chose
ailleurs, dans boost par exemple, qui soit indiqué dans ce cas ?
James a parlé de oberstream et d' oxdrstream, mais je n'ai rien trouvé
:-(
Comme on te l'as dit, non seulement reinterpret_cast n'est pas
nécessaire, mais en plus, c'est une erreur de l'utiliser dans ce
contexte. Il faut définir mauellement le format binaire que l'on
soihaite avoir, puis convertir nos données en tableau de char selon
cette définition.
C'est une tâche assez laborieuse, surtout quand on ne vise pas la
portabilité et qu'on est assuré que le format du fichier et le format
interne sont les mêmes, ce qui est mon cas.
Dans cette situation, est-ce acceptable d'utiliser reinterpret_cast ?
Cette fonction template avait juste pour but d'alléger l'écriture.
fwrite accepte un void *, pourquoi ostream::write ne fait pas de
même ?
Parce qu'elle accepte un char*, et que autant je sais ce qu'écrire
un char veut dire, autant j'ignore ce que peut vouloir dire écrire
un void.
Ben fwrite le sait bien elle...
Mais bon je saisis un peu mieux le truc, ce que j'ai enfin compris
c'est qu'il faut écrire sa routine qui sérialise ses données en un
tableau de char. Ce que je trouve "aberrant" (vous aurez compris que
ce mot était volontairement trop fort et avait pour but de susciter
des réactions ;-) c'est qu'il n'y ait rien dans la SL qui guide le
programmeur dans ce sens, genre une fonction write templatée qui
accepte/appelle un serialiser, ou des fonctions d'aide à la
sérialisation, ou autre chose.
Je trouve que c'est pas évident du tout qu'il faille procéder ainsi,
et j'ai peur de ne pas être le seul. Existe-t-il quelque chose
ailleurs, dans boost par exemple, qui soit indiqué dans ce cas ?
James a parlé de oberstream et d' oxdrstream, mais je n'ai rien trouvé
:-(
Comme on te l'as dit, non seulement reinterpret_cast n'est pas
nécessaire, mais en plus, c'est une erreur de l'utiliser dans ce
contexte. Il faut définir mauellement le format binaire que l'on
soihaite avoir, puis convertir nos données en tableau de char selon
cette définition.
C'est une tâche assez laborieuse, surtout quand on ne vise pas la
portabilité et qu'on est assuré que le format du fichier et le format
interne sont les mêmes, ce qui est mon cas.
Dans cette situation, est-ce acceptable d'utiliser reinterpret_cast ?
Cette fonction template avait juste pour but d'alléger l'écriture.
fwrite accepte un void *, pourquoi ostream::write ne fait pas de
même ?
Parce qu'elle accepte un char*, et que autant je sais ce qu'écrire
un char veut dire, autant j'ignore ce que peut vouloir dire écrire
un void.
Ben fwrite le sait bien elle...
Mais bon je saisis un peu mieux le truc, ce que j'ai enfin compris
c'est qu'il faut écrire sa routine qui sérialise ses données en un
tableau de char. Ce que je trouve "aberrant" (vous aurez compris que
ce mot était volontairement trop fort et avait pour but de susciter
des réactions ;-) c'est qu'il n'y ait rien dans la SL qui guide le
programmeur dans ce sens, genre une fonction write templatée qui
accepte/appelle un serialiser, ou des fonctions d'aide à la
sérialisation, ou autre chose.
Je trouve que c'est pas évident du tout qu'il faille procéder ainsi,
et j'ai peur de ne pas être le seul. Existe-t-il quelque chose
ailleurs, dans boost par exemple, qui soit indiqué dans ce cas ?
James a parlé de oberstream et d' oxdrstream, mais je n'ai rien trouvé
:-(
"Loïc Joly" a écrit dans le message de
news: cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message de
news: cg2esa$q5a$1@news-reader1.wanadoo.fr...
Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
"Loïc Joly" a écrit dans le message de
news: cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
Loïc Joly writes:- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant, etc.
sous forme d'entiers textuels, de manière à disposer de la précision
dont tu as besoin. Le fait que certaines implémentations pourrait ne
pas garantir une telle précision est ici hors propos.
Il me semble, du moins.
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant, etc.
sous forme d'entiers textuels, de manière à disposer de la précision
dont tu as besoin. Le fait que certaines implémentations pourrait ne
pas garantir une telle précision est ici hors propos.
Il me semble, du moins.
Loïc Joly writes:- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant, etc.
sous forme d'entiers textuels, de manière à disposer de la précision
dont tu as besoin. Le fait que certaines implémentations pourrait ne
pas garantir une telle précision est ici hors propos.
Il me semble, du moins.
"M. B." wrote in message
news:<cg2flk$lv3$..."Loïc Joly" a écrit dans le message de
news: cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
Surtout pour des vendeurs de disques, de mémoire et de bande passante.
"M. B." <m_binder@magicnet.com> wrote in message
news:<cg2flk$lv3$1@news-reader2.wanadoo.fr>...
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message de
news: cg2esa$q5a$1@news-reader1.wanadoo.fr...
Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
Surtout pour des vendeurs de disques, de mémoire et de bande passante.
"M. B." wrote in message
news:<cg2flk$lv3$..."Loïc Joly" a écrit dans le message de
news: cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
Surtout pour des vendeurs de disques, de mémoire et de bande passante.
"Loïc Joly" a écrit dans le message de news:
cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message de news:
cg2esa$q5a$1@news-reader1.wanadoo.fr...
Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
"Loïc Joly" a écrit dans le message de news:
cg2esa$q5a$Aurélien REGAT-BARREL wrote:
Dans l'autre sens, je vois les points suivants :
- Un format plus simple à debugger, analyser...
- Du code plus simple à écrire
Y a-t-il d'autres arguments dans un sens ou un autre ?
Pour rester du cote textuel, les avantages d'XML sont
innombrables.
Si ton format interne est IEEE, tu es garanti avec une précision de 17
(ou peut-être 18 -- il faudrait que je vérifie) qu'une conversion
double->ascii->doube ne perd aucune information (en supposant une
implémentation « correcte » de la bibliothèque, évidemment).
Si ton format interne est IEEE, tu es garanti avec une précision de 17
(ou peut-être 18 -- il faudrait que je vérifie) qu'une conversion
double->ascii->doube ne perd aucune information (en supposant une
implémentation « correcte » de la bibliothèque, évidemment).
Si ton format interne est IEEE, tu es garanti avec une précision de 17
(ou peut-être 18 -- il faudrait que je vérifie) qu'une conversion
double->ascii->doube ne perd aucune information (en supposant une
implémentation « correcte » de la bibliothèque, évidemment).
Loïc Joly writes:- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant,
etc. sous forme d'entiers textuels, de manière à disposer de la
précision dont tu as besoin. Le fait que certaines implémentations
pourrait ne pas garantir une telle précision est ici hors propos.
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant,
etc. sous forme d'entiers textuels, de manière à disposer de la
précision dont tu as besoin. Le fait que certaines implémentations
pourrait ne pas garantir une telle précision est ici hors propos.
Loïc Joly writes:- Il y a des types (flottants) pour lesquels une représentation
textuelle classique fait perdre de l'information.
Je ne sais pas ce que tu entends par « classique », mais il est
toujours possible de spécifier une représentation textuelle inspirée
de la représentation binaire utilisée par ton implémentation.
Mais il me semble que si tu analyses bien tes besoins, il y a moyen
de spécifier un format où tu représentes la mantisse, l'exposant,
etc. sous forme d'entiers textuels, de manière à disposer de la
précision dont tu as besoin. Le fait que certaines implémentations
pourrait ne pas garantir une telle précision est ici hors propos.