Pages

Affichage des articles dont le libellé est Optimisation. Afficher tous les articles
Affichage des articles dont le libellé est Optimisation. Afficher tous les articles

Optimisation : tri tableau à 2 dimensions sujet

mardi 8 avril 2014




Bonjour

Je souhaiterais optimiser mon code .
Un petit exemple :
J ai le tableau X[] {3,9,2}
Apres le tir j obtiens 2,3,9

Mon objectif est de faire la difference entre la position initale de 3 et sa nouvelle position,(0-1 = 1) idem avec les autres valeurs de mon tableau
Pour y parvenir, actuellement je cree un tableau initial, un tableau target qui me servira à trier et remplacer les valeurs et un tableau posi qui me servira à comparer les positions initiales et trier.
A l issue je boucle sur l index que je compare à la vealeur de Posi[index]....
C est lent et peut certainement etre optimisé par le tri d un tableau à 2 dimensions ? Qu en pensez vous ?
Merci pour votre aide, commentaires etc

stéphane

mon code :


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
29
30
31
32
33
34
35
 
int T = 30;
Double[] X = { 44.3, 21.3, 31.4, 8.7, 12.8, 45.0, 88.1, 32.0, 53.2, 30.3, 95.8, 50.4, 71.6, 26.7, 3.8, 36, 46, 34.3, 77.2, 55.3, 64.2, 85.5, 18.6, 50.9, 93.6, 26.8, 59, 99.1, 57, 78.1 };

double[] target= new double [T];
int[] posi= new int[T];
for (int Idx = 0; Idx < T; Idx++)
{
target[Idx] = X[Idx];
posi[Idx] = Idx;
}
//---Tri
for (int k = 0; k < T; k++)
{
for (int i = k+1; i < T; i++)
{
if (target[i] < target[k])
{
double tmp = target[k];
target[k] = target[i];
target[i] = tmp;
int tmp2 = posi[k];
posi[k] = posi[i];
posi[i] = tmp2;
}
}
}
int Diff;
int D_t=0;
for (int i = 0; i < T; i++)
{
Diff = posi[i] - i;
Diff = Diff * Diff;
D_t = D_t + Diff;
}






Choix champs pour optimisation BDD sujet

vendredi 28 mars 2014




Bonjour,

je dois utiliser souvent une requête pour savoir si un des champs d'une colonne est nul ou pas.
Ne serait-il pas plus efficace d'enregistrer un champs de type Bool qui est à False tant que ce champs reste vide et passe à True quand ce champs vide est rempli?

Sinon est-ce que l'ordre des champs a un impact (même minime) sur les performances de la BDD?
A-t-on intérêt à mettre les champs que l'on utilise le plus en premier?

Merci d'avance.




Optimisation Site Web sujet




Bonjour,

je me pose des questions quant à l'architecture du site que je suis en train de développer.

C'est une sorte d'agenda, avec une BDD Event qui contient entre autre les champs latitude et longitude et date de fin de l'événement.
Et je voudrais afficher sur la page d'accueil les événements proche de la ville de l'utilisateur.


Jusqu'à maintenant je me disais que j'allais rechercher dans la BDD les événement proches (à une distance fixée de la latitude et de la longitude de l'utilisateur) et ensuite ressortir les événements dont la date n'est pas passée.
Mais comme cette requête sera faite pour tous les utilisateurs sur la page d'accueil, ça risque de vraiment ralentir le site.


Je me dis que le mieux serait donc d'avoir une BDD pour les Events_passés et une Events_a_venir ce qui devrait considérablement accélérer les choses(?).

Mais mon problème est de savoir comment passer un événement de la BDD Events_passés à la BDD Events_a_venir.
J'ai bien pensé à exécuter à intervalles régulier une requête qui compare les dates des événements à venir avec la date actuelle, mais ça ne me semble pas propre du tout (ça risque de ralentir considérablement le site pendant cette requête non?) et en plus ce ne sera pas précis si je ne fais pas cette requête assez régulièrement.

Est-ce selon vous tout de même le meilleur moyen?
Merci d'avance à qui prendra le temps de lire ce petit pavé! (et encore plus à celui qui y répondra ;) )




optimisation de chute sujet

jeudi 27 mars 2014




bonjour
je vais découper des lames de longueur différents à partir des barres de même longueur
pour cela je vais utiliser l'algorithme first fit
quelqu'un qui peut m'aider
cordialement




XL 2010 Optimisation d'un code : titre d'une page avec plusieurs contrôles multipages sujet

samedi 1 février 2014




Bonjour chers amis du forum,

Je vous expose mon problème :
J'ai réalisé le petit fichier ci joint qui aura pour but final de définir les plannings de salariés d'une équipe de maintenance.
la première étape consiste à effectuer la demande de travail et à localiser le lieu. c'est dans ce USF (USFChoixLieu) que le demandeur le sélectionnera.
Dans ce USF, j'utilise plusieurs contrôles multipages imbriqués.
j'arrive sans problèmes (ouf...) à récupérer le titre des pages ouvertes dans le multipages quand l'utilisateur navigue dans ces dernières et qu'il valide.
Mon problème est que le code que j'ai dû écrire est plus que rigide et lourd à mettre en oeuvre.
Je précise que le fichier réel contient beaucoup plus de données que l'exemple fourni.
Je me demande si 'il n'y à pas un moyen d'épurer un peu tout ça...

Si quelqu'un a un peu de temps à me consacrer ;)







XL 2010 Optimisation d'un code sujet




Bonjour chers amis du forum,

Je vous expose mon problème :
J'ai réalisé le petit fichier ci joint qui aura pour but final de définir les plannings de salariés d'une équipe de maintenance.
la première étape consiste à effectuer la demande de travail et à localiser le lieu. c'est dans ce USF (USFChoixLieu) que le demandeur le sélectionnera.
Dans ce USF, j'utilise plusieurs contrôles multipages imbriqués.
j'arrive sans problèmes (ouf...) à récupérer le titre des pages ouvertes dans le multipages quand l'utilisateur navigue dans ces dernières et qu'il valide.
Mon problème est que le code que j'ai dû écrire est plus que rigide et lourd à mettre en oeuvre.
Je précise que le fichier réel contient beaucoup plus de données que l'exemple fourni.
Je me demande si 'il n'y à pas un moyen d'épurer un peu tout ça...

Si quelqu'un a un peu de temps à me consacrer ;)







[9.2] Optimisation de requêtes avec une partie "plein texte" sujet

vendredi 31 janvier 2014




Je vais tenter avec un exemple minimaliste


Code:


CREATE TABLE Main (
        k1 int,
        k2 bigint,
        datage timestamp,
        champ1 text,
        ts_champ1 tsvector, -- ts_champ1=to_tsvector('english',champ1)
        champ2 text,
        PRIMARY KEY(k1, k2)
);
CREATE INDEX main_datage_idx ON Main USING btree(datage);
CREATE INDEX main_champ1_idx ON Main USING gin(ts_champ1) WITH ( fastupdate=on );

EXPLAIN ANALYZE
SELECT k2 FROM Main WHERE
        k1=1 AND champ1 ~* 'm1.*m2.*m3' AND champ2 ~* 'm4';
----------------------------------------------------------------------------------
Index Scan using main_pkey on main  (cost=0.00..8681.10 rows=1 width=8) (actual time=25.779..111.146 rows=32 loops=1)
  Index Cond: (k1 = 1)
  Filter: (((champ1)::text ~* 'm1.*m2.*m3'::text) AND (champ2 ~* 'm4'::text))
  Rows Removed by Filter: 4921
Total runtime: 111.255 ms

EXPLAIN ANALYZE
SELECT k2 FROM Main WHERE
        k1=1 AND ts_champ1 @@ to_tsquery('english','m1 & m2 & m3') AND champ2 ~* 'm4';
----------------------------------------------------------------------------------
Bitmap Heap Scan on main  (cost=894.12..950.09 rows=1 width=8) (actual time=424.047..426.501 rows=32 loops=1)
  Recheck Cond: ((k1 = 1) AND (ts_champ1 @@ '''m1'' & ''m2'' & ''m3'''::tsquery))
  Rows Removed by Index Recheck: 1169
  Filter: (contenu ~* 'm4'::text)
  Rows Removed by Filter: 120
  ->  BitmapAnd  (cost=894.12..894.12 rows=14 width=0) (actual time=423.993..423.993 rows=0 loops=1)
        ->  Bitmap Index Scan on main_pkey  (cost=0.00..201.02 rows=8352 width=0) (actual time=0.589..0.589 rows=4953 loops=1)
              Index Cond: (k1 = 1)
        ->  Bitmap Index Scan on main_champ1_idx  (cost=0.00..692.85 rows=6514 width=0) (actual time=423.281..423.281 rows=122056 loops=1)
        Index Cond: (ts_champ1 @@ '''m1'' & ''m2'' & ''m3'''::tsquery)
Total runtime: 426.600 ms




Mon but final est de faire, de manière très performante sur une table pour un filtre via k1 me renverra environ 8M lignes, une requête qui naïvement serait de ce type :

Code:


SELECT k2 FROM Main WHERE
        k1=? AND champ1 ~* 'm1.*m2.*m3' AND champ2 ~* 'm4'
        AND datage>=?



  • Évidemment m1,m2,m3 et m4 pourraient évoluer selon le besoin fonctionnel. Le but est de capturer des contextes autour d'événement, selon le type d'événement, tout peut changer... j'ai réussi à modéliser tous les cas envisageables, issus d'un REX d'autres projets similaires, avec ces paramètres (m1,m2,m3 devenant plus une liste d'ailleurs).

  • Je m'oriente plus sur les tsvector/tsquery pour la requête finale a priori (impossible d'indexer selon des regexp en 9.2)

  • Le dernier point auquel je réfléchis serait d'intégrer également ces paramètres en base pour donner une "interface de personnalisation de requêtes haut-niveau" (sans SQL visible et a priori loin de la structure réelle de la base)



Auriez-vous des conseils ?


:merci: