1

Bonjour à tous
J'ai ce code à optimiser :
switch ($todo_classe['importance']) {

case 1:
$couleur = "#00ff00";
break;

case 2:
$couleur = "#66cc66";
break;

case 3:
$couleur = "#66ffff";
break;

case 4:
$couleur = "#00ccff";
break;

case 5:
$couleur = "#0066ff";
break;

// Etc..
}


J'aurais pensé à un array mais je bloque après sad

Si vous pouviez m'aider wink
Merci beacoup

2

Qu'est-ce qui te fait bloquer ?
La solution avec un array sera probablement plus rapide.

Sinon, si tu il y a un lien logique entre les numéros et les couleurs, tu peux calculer la couleur à partir de son numéro.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Oui mais j'aimerais justement la solution avec le array qui donne exactement le même résultat.

Et puis je pense pas qu'il y'ait de lien logique entre les couleurs et les numéros sad

4

D'où sortent tes n° ?

$table_couleurs = array(1 => "#00ff00",2 => "#66cc66", ...);
$couleur = $table_couleurs[$todo_class['importance']];
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

$couleur = $couleursImportantce[$todo_classe['importance']]; mieux en effet ^^
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

6

C'est plus rapide, mais en terme d'allocation mémoire, lequel est le mieux ? (bon, c'est vrai que sur les machines actuelles on n'est pas à ça près , mais je me demande)
avatar

7

je sais pas trop ... de tte facon les 2 reviennent au mme :

- le switch est aussi rapide en acces vu que normalment c + rapide qu'une imbrication de if/else ... mais c + long niveau code source donc + long a compiler
- l'array est + pti niveau source mais allocation en +, ensuite l'accès doit ê tt aussi efficace que le switch ^^
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

8

[cross]

Nil> ben ca dépend, dans le cas d'un langage compilé [donc pas php], si le compilo est bete, met tous les tableaux en ram et met tout le code en rom, alors oui tu vas économiser de la ram, mais sur bcp de plateformes ram et rom sont confondues (sur pc, le fait que le code soit en lecture-seule permet qd meme de ne pas avoir a écrire sur le disque si la RAM swappe, juste lire a partir du disque quand on en a besoin ^^) et comme le 1er code est plus gros en ram+rom, c'est plutot moins efficace (surtout que ca epuisera plus vite les caches)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

faut aussi se rappeler qu'un .php est recompilé à chq execution ^^
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

10

En effet, c'est exactement ce que je cherchais wink

Merci à tous wink

Edit : et ça marche en plus ^^

11

hmmm par contre ... si tuveux le + rapide c pas du coté php qu'il faut chercher wink

sachant que c'est sur les styles que tu bidouille ...

un echo "class='importance".$todo_classe['importance']"'"; serait meilleur que tt le reste wink
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

12

(et plus propre oui)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

13

Hum,

En fait je pense que je vais mettre une image à la place de colorer une phrase, donc faut que je me décide encore ^^

14

Question conne, tant qu'on est là-dedans : yAro, tu dis que le PHP est recompilé à chaque passe (je pensais qu'il était juste parsé comme un langage de script tout con, donc qu'on évaluait les expressions au fur et à mesure...). C'est un peu gland, non ? Il n'y a pas moyen de le compiler et de le tokeniser une fois pour toutes (quitte à stocker la version tokenisée ailleurs) et de travaillers avec un hash pour voir si le fichier a été modifié avant chaque appel ?
avatar

15

si y'a moyen mais pas par défaut ... il faut installer une extension Zend ou un truc genre TurckMMCache ^^ et la tu peux précompiler les scripts et mme les crypter devil
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

16

Ah oui, c'est vrai j'avais lu ça dans la bible PHP
avatar

17

Je continue ^^ j'ai encore un petit problème
$contenu = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $todo_classe['contenu']); $contenu = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $todo_classe['contenu']);


Y'a un problème avec ces Regex ?

18

Nil> D'ailleurs ça marche du tonnerre Turck-mmcache. C'est ce que j'utilise sur TiWiki. Pour la page que j'ai utilisé pour tester :
sans => 4s pour générer la page
avec => 70ms pour générer la page
Il faut dire aussi que le code de Wikimedia se prete particulièrement bien à ce type d'optimisation : très volumineux, il est long à tokeniser, par contre les chemins d'exécution sont bien optimisés.

egexp est glouton par défaut. Essaie de passer "[b]gras[/b]normal[b]gras[/b]"d3pmod> oui. Le matching des r à ta regexp
[edit] euh attends 2 mins j'ai ptet dit une connerie j'ai pas vu les flags en fin de regexp
[edit] bon bah je viens d'aller voir, oublie ce que j'ai dit grin, le flag U supprime bien le mode glouton, donc si y'a un pb, c'est pas ça.

19

Les marqueurs imbriqués sont autorisés ?

20

Normalement oui

EDIT : en fait j'ai ça
$contenu = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $todo_classe['contenu']);
$contenu = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $todo_classe['contenu']);
$contenu = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $todo_classe['contenu']); $contenu = preg_replace('!http://[a-z0-9._/-]+!i', '<a href="$0">$0</a>', $todo_classe['contenu']);


Les couleurs marchent mais pas le gras et italique

21

$todo_classe['contenu'] -> $contenu, non ? hehe

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

22

Oui voilà en fait, c'était :
$contenu = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $todo_classe['contenu']);
$contenu = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $contenu);
$contenu = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $contenu); $contenu = preg_replace('!http://[a-z0-9._/-]+!i', '<a href="$0">$0</a>', $contenu);


Merci beaucoup wink