OVH Cloud OVH Cloud

unsigned short

11 réponses
Avatar
Bruno
Quel est la meilleure façon pour stocker un entier [0, 65535] dans une
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) => optimisation.

je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation l'addition de
32767

merci
--
Bruno Causse
http://perso.wanadoo.fr/othello

10 réponses

1 2
Avatar
Emmanuel Bourg
un char ?

Bruno wrote:

Quel est la meilleure façon pour stocker un entier [0, 65535] dans un e
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) => optimisa tion.

je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation l'additio n de
32767

merci


Avatar
Olivier Demaine
"Bruno" a écrit dans le message news:
BBCE7A66.CB49%
Quel est la meilleure façon pour stocker un entier [0, 65535] dans une
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) => optimisation.

je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation l'addition
de

32767

merci
--
Bruno Causse
http://perso.wanadoo.fr/othello



il me semble que java travail en interne sur des int, d'ou perte de
performances à l'execution car il y un cast implicitede short vers int, de
plus je crois que les byte et short sont stocké en mémoire sous forme de
int, donc 4 octets, donc pas de gain en mémoire.

je suis sur à 90% de ce que j'avance, mais j'ai 10% de doute, quelqu'un peut
infirmer ou confirmer ?

olivier

Avatar
Bruno
dans l'article 3fa8fd26$0$6980$, Olivier
Demaine à a écrit le 05/11/2003 14:36 :


"Bruno" a écrit dans le message news:
BBCE7A66.CB49%
Quel est la meilleure façon pour stocker un entier [0, 65535] dans une
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) => optimisation.

je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation l'addition
de

32767

merci
--
Bruno Causse
http://perso.wanadoo.fr/othello



il me semble que java travail en interne sur des int, d'ou perte de
performances à l'execution car il y un cast implicitede short vers int, de
plus je crois que les byte et short sont stocké en mémoire sous forme de
int, donc 4 octets, donc pas de gain en mémoire.

je suis sur à 90% de ce que j'avance, mais j'ai 10% de doute, quelqu'un peut
infirmer ou confirmer ?

olivier




non, non

int maxPositions = 2500000;
int maxFeatures = 47;
short[][] positions = new short[maxPositions][maxFeatures]

mes valeurs appartienent a [0, 59049[

d'ou la question?

ps avec des int je double la taille de positions -> manque de memoire :(

ps2: c'est bien pratique les unsigned :(
--
Bruno Causse
http://perso.wanadoo.fr/othello


Avatar
Bruno
dans l'article boaqke$rf0$, Emmanuel Bourg à
a écrit le 05/11/2003 13:52 :

un char ?


?????????
--
Bruno Causse
http://perso.wanadoo.fr/othello

Avatar
Nicolas Repiquet
"Bruno" a écrit dans le message news:
BBCEBDF7.CBA7%

un char ?


???????


Ben les char en java c'est bien des 16bit unsigned =) C'est pas bo mais
bon...

-- Nicolas Repiquet


Avatar
Bruno
dans l'article 3fa90240$0$10432$, Nicolas Repiquet à
a écrit le 05/11/2003 15:00 :


"Bruno" a écrit dans le message news:
BBCEBDF7.CBA7%

un char ?


???????


Ben les char en java c'est bien des 16bit unsigned =) C'est pas bo mais
bon...

-- Nicolas Repiquet




top, :-)

merci

--
Bruno Causse
http://perso.wanadoo.fr/othello



Avatar
Olivier Demaine
"Bruno" a écrit dans le message news:
BBCEBDD8.CBA6%
dans l'article 3fa8fd26$0$6980$, Olivier
Demaine à a écrit le 05/11/2003 14:36 :


"Bruno" a écrit dans le message news:
BBCE7A66.CB49%
Quel est la meilleure façon pour stocker un entier [0, 65535] dans une
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) =>
optimisation.




je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation
l'addition



de
32767

merci
--
Bruno Causse
http://perso.wanadoo.fr/othello



il me semble que java travail en interne sur des int, d'ou perte de
performances à l'execution car il y un cast implicitede short vers int,
de


plus je crois que les byte et short sont stocké en mémoire sous forme de
int, donc 4 octets, donc pas de gain en mémoire.

je suis sur à 90% de ce que j'avance, mais j'ai 10% de doute, quelqu'un
peut


infirmer ou confirmer ?

olivier




non, non

int maxPositions = 2500000;
int maxFeatures = 47;
short[][] positions = new short[maxPositions][maxFeatures]

mes valeurs appartienent a [0, 59049[

d'ou la question?

ps avec des int je double la taille de positions -> manque de memoire :(

ps2: c'est bien pratique les unsigned :(
--
Bruno Causse
http://perso.wanadoo.fr/othello

Lorsque les tableaux à dimensions multiples ont une forme rectangulaire ou

cubique, il est préférable de ne construire qu'un tableau à une dimension et
d'effectuer les calculs d'index nécessaire.

public class Tableau
{ private int[][][] array_=new int[3][4][5];

public int get(int x,int y, int z)
{ return array_[x][y][z];
}
}

devient

public class Tableau
{ private int[] array_=new int[3*4*5];

public int get(int x,int y, int z)
{ return array_[x+y*4+z*(4*5)];
}
}

Cela améliore les performances et réduit la consommation mémoire. Les
tableaux à dimensions multiples doivent être utilisés, si et seulement si,
chaque ligne peut avoir une taille différente.



Avatar
Bruno
dans l'article 3fa90463$0$6967$, Olivier
Demaine à a écrit le 05/11/2003 15:07 :


"Bruno" a écrit dans le message news:
BBCEBDD8.CBA6%
dans l'article 3fa8fd26$0$6980$, Olivier
Demaine à a écrit le 05/11/2003 14:36 :


"Bruno" a écrit dans le message news:
BBCE7A66.CB49%
Quel est la meilleure façon pour stocker un entier [0, 65535] dans une
variable de type short (int pose un probleme de memoire)?

acces intensif a ce type de variable (indices de tableau) =>
optimisation.




je ne demande si il existe une solution + efficace que :
pendant le stockage soustraire 32767 et pendant l'utilisation
l'addition



de
32767

merci
--
Bruno Causse
http://perso.wanadoo.fr/othello



il me semble que java travail en interne sur des int, d'ou perte de
performances à l'execution car il y un cast implicitede short vers int,
de


plus je crois que les byte et short sont stocké en mémoire sous forme de
int, donc 4 octets, donc pas de gain en mémoire.

je suis sur à 90% de ce que j'avance, mais j'ai 10% de doute, quelqu'un
peut


infirmer ou confirmer ?

olivier




non, non

int maxPositions = 2500000;
int maxFeatures = 47;
short[][] positions = new short[maxPositions][maxFeatures]

mes valeurs appartienent a [0, 59049[

d'ou la question?

ps avec des int je double la taille de positions -> manque de memoire :(

ps2: c'est bien pratique les unsigned :(
--
Bruno Causse
http://perso.wanadoo.fr/othello

Lorsque les tableaux à dimensions multiples ont une forme rectangulaire ou

cubique, il est préférable de ne construire qu'un tableau à une dimension et
d'effectuer les calculs d'index nécessaire.

public class Tableau
{ private int[][][] array_=new int[3][4][5];

public int get(int x,int y, int z)
{ return array_[x][y][z];
}
}

devient

public class Tableau
{ private int[] array_=new int[3*4*5];

public int get(int x,int y, int z)
{ return array_[x+y*4+z*(4*5)];
}
}

Cela améliore les performances et réduit la consommation mémoire. Les
tableaux à dimensions multiples doivent être utilisés, si et seulement si,
chaque ligne peut avoir une taille différente.





je prefere passer par une ref suplementaire et ne pas calculer d'index.

int[][] array = new int[][];

int[] temp = array[];

pour lister dans une boucle le tableau secondaire sans calcul d'index.

--
Bruno Causse
http://perso.wanadoo.fr/othello




Avatar
Nicolas Delsaux
Le Wed, 5 Nov 2003 15:07:38 +0100, Olivier Demaine s'est levé est s'est dit
: "tiens, si j'écrivais aux mecs de fr.comp.lang.java :

Lorsque les tableaux à dimensions multiples ont une forme rectangulaire ou
cubique, il est préférable de ne construire qu'un tableau à une dimension et
d'effectuer les calculs d'index nécessaire.

Cela améliore les performances et réduit la consommation mémoire. Les
tableaux à dimensions multiples doivent être utilisés, si et seulement si,
chaque ligne peut avoir une taille différente.


Ah bon ? Tu as un test significatif de ce que tu avances ?

--
Nicolas Delsaux
"J'ai toujours dit qu'il vallait mieux délyophiliser les tardigrades
qu'empapaouter les macareux."
Jeam Tag

Avatar
Erwan David
Nicolas Delsaux écrivait :

Le Wed, 5 Nov 2003 15:07:38 +0100, Olivier Demaine s'est levé est s'est dit
: "tiens, si j'écrivais aux mecs de fr.comp.lang.java :

Lorsque les tableaux à dimensions multiples ont une forme rectangulaire ou
cubique, il est préférable de ne construire qu'un tableau à une dimension et
d'effectuer les calculs d'index nécessaire.

Cela améliore les performances et réduit la consommation mémoire. Les
tableaux à dimensions multiples doivent être utilisés, si et seulement si,
chaque ligne peut avoir une taille différente.


Ah bon ? Tu as un test significatif de ce que tu avances ?


J'ai pas de test, mais j'ai une explication.

En java un tableau à n dimensions c'est un tableau à une dimension de
tableaux à n-1 dimensions.

Donc pour la consommation mémoire ça va faire plein d'en-têtes de
tableaux supplémentaires.

Ensuite l'accès va passer par un tas de aaload/aastore un peu couteux...


1 2