Fonction très lourde

Résolu
cs_didine13 Messages postés 96 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 14 août 2013 - 17 avril 2012 à 18:10
cs_didine13 Messages postés 96 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 14 août 2013 - 19 avril 2012 à 00:35
Bonjour,

Infos: J'utilise ActiveWidgets
J’ai créé une fonction pour extraire des donné d’un grid 23000 row et sur 18 col, mais sur les navigateurs ex : explorer 2 heures puis ca ne bouge plus (fige) sur mozilla 2 heures puis carrément blanc (fige) et sur chrome 43 secondes donc fonctionne, mais la page n’est pas fluide.

Avez une solution pour faire un genre de doevents comme vb SVP ou autre pour rafraîchir la fonction.

function button2 () {
alert("Temps estimer a 90 secondes");
// etape 1
var row_count = table.getCount();
var NB_row1 = 0;
if (Category.getCellText(2, 0).length !0) var row1_Category Category.getCellText(1, 0);
var NB_row2 = 0;
if (Category.getCellText(2, 1).length !0) var row2_Category Category.getCellText(1, 1);
var NB_row3 = 0;
if (Category.getCellText(2, 2).length !0) var row3_Category Category.getCellText(1, 2);
var NB_row4 = 0;
if (Category.getCellText(2, 3).length !0) var row4_Category Category.getCellText(1, 3);
var NB_row5 = 0;
if (Category.getCellText(2, 4).length !0) var row5_Category Category.getCellText(1, 4);
var NB_row6 = 0;
if (Category.getCellText(2, 5).length !0) var row6_Category Category.getCellText(1, 5);
var NB_row7 = 0;
if (Category.getCellText(2, 6).length !0) var row7_Category Category.getCellText(1, 6);
var NB_row8 = 0;
if (Category.getCellText(2, 7).length !0) var row8_Category Category.getCellText(1, 7);
var NB_row9 = 0;
if (Category.getCellText(2, 8).length !0) var row9_Category Category.getCellText(1, 8);
var NB_row10 = 0;
if (Category.getCellText(2, 9).length !0) var row10_Category Category.getCellText(1, 9);
var NB_row11 = 0;
if (Category.getCellText(2, 10).length !0) var row11_Category Category.getCellText(1, 10);
var NB_row12 = 0;
if (Category.getCellText(2, 11).length !0) var row12_Category Category.getCellText(1, 11);
var NB_row13 = 0;
if (Category.getCellText(2, 12).length !0) var row13_Category Category.getCellText(1, 12);
var NB_row14 = 0;
if (Category.getCellText(2, 13).length !0) var row14_Category Category.getCellText(1, 13);
label0:
for(var row=0;row<row_count;row++) { 
label1:
for(var row2=0;row2<Category.getRowCount();row2++) { 
if (Category.getCellText(2, 0).length !0) if (Category.getCellText(1, 0) obj.getCellText(0, row) && NB_row1 == Category.getCellText(2, 0)) break label1; 
if (Category.getCellText(2, 1).length !0) if (Category.getCellText(1, 1) obj.getCellText(0, row) && NB_row2 == Category.getCellText(2, 1)) break label1; 
if (Category.getCellText(2, 2).length !0) if (Category.getCellText(1, 2) obj.getCellText(0, row) && NB_row3 == Category.getCellText(2, 2)) break label1; 
if (Category.getCellText(2, 3).length !0) if (Category.getCellText(1, 3) obj.getCellText(0, row) && NB_row4 == Category.getCellText(2, 3)) break label1; 
if (Category.getCellText(2, 4).length !0) if (Category.getCellText(1, 4) obj.getCellText(0, row) && NB_row5 == Category.getCellText(2, 4)) break label1; 
if (Category.getCellText(2, 5).length !0) if (Category.getCellText(1, 5) obj.getCellText(0, row) && NB_row6 == Category.getCellText(2, 5)) break label1;  
if (Category.getCellText(2, 6).length !0) if (Category.getCellText(1, 6) obj.getCellText(0, row) && NB_row7 == Category.getCellText(2, 6)) break label1; 
if (Category.getCellText(2, 7).length !0) if (Category.getCellText(1, 7) obj.getCellText(0, row) && NB_row8 == Category.getCellText(2, 7)) break label1; 
if (Category.getCellText(2, 8).length !0) if (Category.getCellText(1, 8) obj.getCellText(0, row) && NB_row9 == Category.getCellText(2, 8)) break label1; 
if (Category.getCellText(2, 9).length !0) if (Category.getCellText(1, 9) obj.getCellText(0, row) && NB_row10 == Category.getCellText(2, 9)) break label1; 
if (Category.getCellText(2, 10).length !0) if (Category.getCellText(1, 10) obj.getCellText(0, row) && NB_row11 == Category.getCellText(2, 10)) break label1;  
if (Category.getCellText(2, 11).length !0) if (Category.getCellText(1, 11) obj.getCellText(0, row) && NB_row12 == Category.getCellText(2, 11)) break label1;  
if (Category.getCellText(2, 12).length !0) if (Category.getCellText(1, 12) obj.getCellText(0, row) && NB_row13 == Category.getCellText(2, 12)) break label1; 
if (Category.getCellText(2, 13).length !0) if (Category.getCellText(1, 13) obj.getCellText(0, row) && NB_row14 == Category.getCellText(2, 13)) break label1; 
//
if(Category.getCellText(1, row2) == obj.getCellText(0, row)) {
//
if (Category.getCellText(2, 0).length !0) if(row1_Category obj.getCellText(0, row)) NB_row1 = (NB_row1 +1);
if (Category.getCellText(2, 1).length !0) if(row2_Category obj.getCellText(0, row)) NB_row2 = (NB_row2 +1);
if (Category.getCellText(2, 2).length !0) if(row3_Category obj.getCellText(0, row)) NB_row3 = (NB_row3 +1);
if (Category.getCellText(2, 3).length !0) if(row4_Category obj.getCellText(0, row)) NB_row4 = (NB_row4 +1);
if (Category.getCellText(2, 4).length !0) if(row5_Category obj.getCellText(0, row)) NB_row5 = (NB_row5 +1);
if (Category.getCellText(2, 5).length !0) if(row6_Category obj.getCellText(0, row)) NB_row6 = (NB_row6 +1);
if (Category.getCellText(2, 6).length !0) if(row7_Category obj.getCellText(0, row)) NB_row7 = (NB_row7 +1);
if (Category.getCellText(2, 7).length !0) if(row8_Category obj.getCellText(0, row)) NB_row8 = (NB_row8 +1);
if (Category.getCellText(2, 8).length !0) if(row9_Category obj.getCellText(0, row)) NB_row9 = (NB_row9 +1);
if (Category.getCellText(2, 9).length !0) if(row10_Category obj.getCellText(0, row)) NB_row10 = (NB_row10 +1);
if (Category.getCellText(2, 10).length !0) if(row11_Category obj.getCellText(0, row)) NB_row11 = (NB_row11 +1);
if (Category.getCellText(2, 11).length !0) if(row12_Category obj.getCellText(0, row)) NB_row12 = (NB_row12 +1);
if (Category.getCellText(2, 12).length !0) if(row13_Category obj.getCellText(0, row)) NB_row13 = (NB_row13 +1);
if (Category.getCellText(2, 13).length !0) if(row14_Category obj.getCellText(0, row)) NB_row14 = (NB_row14 +1);
//
  for(var j=5;j<6;j++) { 
        data += '"'+(obj.getCellText(j, row).toLowerCase().replace(/ /g, '-').replace('---', '-').replace('--', '-')); // Minuscules
if(j > 0) data += '",'; 
   } 
  for(var j=5;j<6;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=6;j<7;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=4;j<5;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=0;j<1;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=5;j<6;j++) { 
        data += '","'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=1;j<2;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=2;j<3;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=1;j<2;j++) { 
  data += ''; 
if(j > 0) data += ',,,,'; 
   } 
  for(var j=3;j<4;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=12;j<13;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",'; 
   } 
  for(var j=2;j<3;j++) { 
        data += '"'+''; 
if(j > 0) data += '",'; 
   } 
  for(var j=2;j<3;j++) { 
        data += '"'+'6","deny","manual'; 
if(j > 0) data += '",'; 
   } 
  for(var j=9;j<10;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '",,"true","true",'; 
   } 
  for(var j=10;j<11;j++) { 
        data += '"'+obj.getCellText(j, row); 
if(j > 0) data += '"'; 
   } 
   data += "\r\n";
}}} 
//


// suite du code



Merci d'avance

3 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 avril 2012 à 19:45
Salut,

Tu devrais commencer par réécrire ta fonction proprement, parce que là c'est un fouillis total. Ensuite, tu peux regarder du côté des web workers afin d'obtenir la fluidité dans ta page web.
3
cs_didine13 Messages postés 96 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 14 août 2013
17 avril 2012 à 20:57
Merci d'avoir pris le temps pour moi

D'abor oui (lol) mon code c'est vraiment du bordel, mais je début dans le javascript (promis des que je comprends mieux le Web Workers je réécrirais mon code a peut prêt mieux que ce lui la.


Donc j'ai vue sur le net que c'est vraiment ce qu'il me faut c'est très puissant (j'adore ce Web Workers).
Mais j'ai un petit problème, j'ai l'impression qu'il faut tous déclarer même les alert.
Je ne veux pas vous déranger avec ceci c'est juste pour vous remercier pour m'avoir conduit vers une solution sûr.

Donc 1000 merci TychoBrahe

Je garde le message temporairement ouvert juste en cas ou !
0
cs_didine13 Messages postés 96 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 14 août 2013
19 avril 2012 à 00:35
J'essaye d'utilisé web workers, mais ce que j'ai vus sur le net est que il ne prend pas les variables ou objet de ma fenêtre (.html) principal déjà déclarer, donc il faut tous le temps re déclarer une nouvelle fonction, mais le problème est que moi j'utilise un grid et il faut vraiment que j'ai accès directement a mes variable, âpres des heures de recherches j'ai remarquer que je ne suis pas le seul et que personne n'à trouver une solution.

J'ai toujours le même message dans chrome Uncaught ReferenceError: obj is not defined, dans mozilla obj is not defined,

Dans mon fichier workers.js je veux utiliser comme ceci.


function addNumbers(row_count) {

var col_0 = new Array(row_count)
for (var i=0; i < col_0.length; ++i){
col_0[i] = new Array(obj.getCellText(0, i));
}

var data = "GO \r\n"; 
for(var row2=0;row2<row_count;row2++) { 
   data += row2+" \r\n "+obj1;
}


return  data+obj1+row_count;
}

self.onmessage = function (event) {
    var data = event.data;
    switch(data.op) {
        case 'add':
        postMessage(addNumbers(data.row_count));
        break;

        default:
        postMessage("probleme!");
    }
};


Avez-vous une autre solution svp
0
Rejoignez-nous