tsp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tsp-devel] Question sur le type 'String'


From: Stephane Galles
Subject: Re: [Tsp-devel] Question sur le type 'String'
Date: Sat, 03 Jan 2004 12:14:59 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3.1) Gecko/20030721 wamcom.org



Eric NOULARD wrote:

En gros, en ce qui concerne la taille max d'un string peut être dynamique
MAIS une fois que les sample sont en route celle-ci ne change plus.
Oui, j'avais bien pensé à cela mais meme là on va avoir des problèmes.

Je m'explique : coté consumer, pour recolter les données qui arrivent, il y
a deux solutions, soit utiliser la callback soit dépiler en sortie du ringbuf.

Actuellement on ne dépile que des doubles. Donc, on a un RinfBuf de doubles.

Mais maintenant on se retrouve avec la nécessité d'empiler dans le RingBuf
des types hétérogènes. Alors effectivement, j'avais complété l'implémentation du RingBuf en ajoutant la possibilité de spécifier en RunTime un type via sa taille
(avec l'implémentation original tout ce faisait à la compil via des macros).

Donc on peut faire ce que tu dis avec le RingBug actuel, mais...

Le soucis est le suivant : pour pouvoir empiler dans le meme ringbuf
string, doubles, et tutti, la taille d'un élément du RingBuf devra etre
égal à la taille du plus gros des élements qu'on va devoir y empiler...

Imagine que dans le paquet de variable, il y en ait une avec une string
de 100 charatères, on va créer un RingBuf avec des emplacements de
100 octets, pour le plus souvent y ranger des INT ou des DOUBLE.

La présence d'une seule String de taille un peu importante peu faire
enfler le RingBuf de facon démesurée.

Ou alors, si tu me dis que la taille max des strings c'est, par exemple
16 charactères, et dans un premier temps, je code le worst case, en créant
un RingBuf avec des emplacements de 16 charactères. Ce RingBuf
serait juste 2x plus grand qu'actuellement. Acceptable.

Sinon, il existe un autre solution : on fait un RingBuf par type, taillé en largeur en fonction du type, et taillé en longueur en fonction des fréquences de toute
les variables de ce type là. Mais même sur les string uniquement, si elle
n'ont pas une taille max, cela peut faire nimporte quoi trés rapidement
uniquement sur le buffer type String.

Il y a quelque chose que je n'aurais pas vu ?

Stephane.











reply via email to

[Prev in Thread] Current Thread [Next in Thread]