Bonjour,
je travaille actuellement à la traduction d'un code C++ ultra rapide en java. Pour que ce dernier soit ultra rapide, on n'utilise QUE des pointeurs (cf. le code qui suit).
Bref, une jolie horreur très rapide à base de pointeurs :-(Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 int function(uint8_t *imageIn, uint8_t *imageOut, int imageWidth, int imageHeight, int size) { uint8_t *in,*out,*aux; uint8_t *inLeft,*inRight,*outLeft,*outRight; uint8_t max; in = (uint8_t *)imageIn; out = (uint8_t *)imageOut; ... /* Computation */ /* Row by row */ for (j=0; j<imageHeight; j++) { inLeft = in+(j*imageWidth); outLeft = out+(j*imageWidth); inRight = inLeft+imageWidthMinus1; outRight = outLeft+imageWidthMinus1; max = *inLeft; histo[max]++; for (i=0; i<middle; i++) { inLeft++; histo[*inLeft]++; if (*inLeft > max) { max = *inLeft; } } *outLeft = max;
Mais le souci, c'est que si je traduis/modifie ces pointeurs par des valeurs/indices de tableau, on double le temps d'exécution (on a fait le test en C++).
Par exemple :
Code:
1
2
3
4
5
6
7
8
9
10 max = in[inLeft]; histo[max]++; for (i=0; i<middle; i++) { inLeft++; histo[in[inLeft]]++; if (in[inLeft] > max) { max = in[inLeft]; } } out[outLeft] = max;
Le souci c'est qu'en Java, il me semble que je n'ai pas le choix et je dois travailler avec les indices comme le dernier petit morceau de code.
Je pose la question à tout hasard (mais sans conviction je dois l'avouer) : y aurait il une solution pour avoir le même type de code (dans le sens rapidité) que le premier exemple que j'ai montré au dessus ? Donc un code qui travaillerai avec des pointeurs que l'on fait glisser/pointer sur les éléments du tableau ?
Merci par avance...