Bonjour à tous

j'ai un code qui est bizarement lent le voici :
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
24
25
26
27
28
29
30
31
32
33
34
35
 
    private int compare(int delay)
    {
        int count = 0;
 
        //faire une copie de dc2_copy
        ArrayList<decompose> dc2_copy3 = new ArrayList<decompose>();
        for (int k = 0; k < dc2_copy.size(); k++)
        {
            dc2_copy3.add(new decompose());
            dc2_copy3.get(k).start = dc2_copy.get(k).start;
        }
        //on compare dc2_copy3 et dc1
        int s1 = dc1.size();
        for (int i = 0; i < s1; i++)
        {
            double b = dc1.get(i).start;
            int s2 = dc2_copy3.size();
            double a=0;
            for (int j = 0; j < s2; j++)
            {
                //le fait de laisser la ligne suivante seule augmente considérablement le temps de calculs
                a = dc2_copy3.get(j).start;
 
                if (a > b - delay && a <= b + delay)
                {
                    count++;
                    dc2_copy3.get(j).start = -1999999999;
                    j = dc2_copy3.size(); //break
                }
            }
        }
 
        return count;
    }
ce qui est étrange c'est que si je supprime la ligne suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
a = dc2_copy3.get(j).start;
j'ai une exécution quasi instantannée.

la question est pourquoi ? et qu'est-ce que je fais de travers?

merci!

je rajoute la classe "décompose" pour que vous sachiez tout:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public class decompose {
    public int number;
    public double start;
    public double end;
    public String text = "";
    public String timecodes = "";
}