Bonjour,
Je suis en train d'implémenter une fonction de hashage sous Java. La particularité de cette fonction est qu'elle nécessite l'utilisation d'une très grosse matrice (21760 lignes pour 400 colonnes, les valeurs étant binaires 0 ou 1, ce qui représente environ 1 Moctet). Pour pouvoir travailler avec cette matrice, je comptais la définir dans une classe contenant uniquement un tableau 2D statique avec cette matrice. Le problème est que lors de la compilation, j'obtiens l'erreur "code too large". Il semblerait en effet que le fichier java d'environ 3Mo ainsi créé dépasse une limitation fixée à 64 Ko par classe (ou méthode, ou je ne sais quoi) par java (lorsque je réduis considérablement la taille de la matrice, la compilation est acceptée). Etant donné que je ne peux pas compiler, l'utilisation d'options comme -Xmx -Xms me semble par ailleurs superflue.
Je voudrais donc savoir si quelqu'un avait une idée pour travailler avec ce genre de très grands tableaux. Ce dont j'ai besoin au niveau des opérations, c'est de pouvoir ensuite effectuer des XOR sur plusieurs lignes de façon efficace.
Voici une partie de la classe en question pour vous donner une idée. J'utilise un tableau de int sous forme hexa pour représenter des blocs de 32 bits. Seul le nombre de ligne est beaucoup plus important en réalité, et conduit à l'erreur:"code too large". (Remarquez que dans le dernier bloc int de chaque ligne 16 bits sont superflus)
J'attends vos idées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class MiniTableau { public static int t[][]= { {0xa4033027,0xec7d8368,0x0b4eb5eb,0xa1409450,0x31a02954,0x9f2ac0d1,0x342509c8 ,0x9668da91,0xf8ffb6ca,0xdfd4c606,0x670f3c83,0x9d66dd13,0xf88b54c6}, ..... ,{0xeecd2c33,0x0e9724a5,0x1473a5bf,0xe644d1de,0x5fdd98dc,0xe12ff0a2,0x5d58d603 ,0x824a517c,0xb1a10148,0x5cf3b072,0x032f32d2,0x6673818a,0x8ba3401c}, {0xc6b7645f,0xdeab6cef,0x0d9ff76a,0x8b31e145,0xa450a520,0x0538a96b,0xca59e829 ,0x6013481b,0xe4053927,0x55148e6c,0x5eefaff3,0xf60793c3,0x99ce2b37}, {0x7998d82f,0xc459dcc8,0xc848e5d4,0x239d3638,0xfb1aba4f,0x406ab06f,0x6776ef3c ,0x696c9a4e,0x85889146,0x421f4dab,0xfab3e764,0xe9ceaf27,0xfc72a834}, {0x13ba04ac,0xc8775192,0x0933c794,0x2ab416df,0x80d072c8,0xecfd348f,0x2e723a5b ,0x1bbcfbfa,0x39ef696a,0x897ea889,0x3385a44a,0x34cf97aa,0x6321d04a}, {0x42cadf3a,0x8337b78f,0x79960a45,0x25c6f6de,0x95a60a48,0x64b62c47,0x918ebb5c ,0xd3f8090f,0xbdc5c3ef,0xca3ea654,0xef29acfb,0xa3839b30,0xef98dddd}, {0xe142a473,0x36513f2f,0xeb81812b,0xdf82ba5c,0x5df2cc8c,0xc2bd27c8,0x40f064fd ,0xd11093b6,0x5b42294c,0x0f16a25f,0x9ff1d063,0x203155d4,0xd0672cf1} }; }
Merci d'avance
Partager