Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 29/06/13 13:54 Sujet du message: |
|
|
Normalement cela n'influe pas sur la vitesse d'exécution mais sur le temps de chargement. Map Optimizer génère ainsi des noms pour les différents éléments afin de réduire la taille de ceux-ci et donc du temps de chargement ainsi que de réduire la taille de la carte. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 29/06/13 18:37 Sujet du message: |
|
|
Ayane a écrit: | Normalement cela n'influe pas sur la vitesse d'exécution mais sur le temps de chargement. Map Optimizer génère ainsi des noms pour les différents éléments afin de réduire la taille de ceux-ci et donc du temps de chargement ainsi que de réduire la taille de la carte. |
Et pourtant ca influe la vitesse du code, du moins c'est visible avec un "stress test" en comparant la chute de fps avec 2 codes identiques sauf la longueur des noms.
Et oui bien entendu faut le faire plusieurs fois dans les mêmes conditions (ressources machines réservées essentiellement à ce test et pas à autre chose) _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 08/07/13 20:35 Sujet du message: |
|
|
Coucou !
Nan, vous inquiétez pas, je ne me suis pas enfui, j'étais juste parti en vac'
Bref. Je reviens parce que j'ai un déclencheur qui fait... Ben qui fait rien en fait, ce qui n'est pas son objectif.
J'utilise des variables locales. Déjà, première question, est ce que les variables locales sont utiles pour éviter les memory leaks ou est ce qu'il faut s'y prendre comme dans le tuto sur les ML en créant une variable globale et en l'effaçant à la fin du déclencheur ?
Ensuite, j'ai une question à propos des variables locales. J'ai fait le déclencheur suivant :
Jass: | function Trig_Mar_Actions takes nothing returns nothing
// Déclaration des variables. Variables locales pour éviter les memory leaks
local real temps_2 = 0
local real transparence_de_l_eau_2 = 0
// procédure
set temps_2 = temps_2 + 1
set transparence_de_l_eau_2 = ( -25.00 * CosBJ( ( 360.00 * temps_2 ) / udg_douze_heures_virtuelles ) ) + 25
call SetWaterBaseColorBJ( 100, 100, 100, transparence_de_l_eau_2 )
// Bon, ça marche pas...
// Il faudrait penser à mettre un test pour que le temps soit remis à 0 quand il dépasse un seuil
endfunction
//===========================================================================
function InitTrig_Mar takes nothing returns nothing
set gg_trg_Mar = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_Mar, 1.00 )
call TriggerAddAction( gg_trg_Mar, function Trig_Mar_Actions )
endfunction |
C'est un déclencheur périodique qui s'éxécute toutes les secondes. Il ne fonctionne pas parce que la variable temps_2 est sensée augmenter de 1 à chaque éxécution du déclencheur, or cette variable est redéclarée à la valeur 0 à chaque fois. Comment est ce que je peux contourner le problème ? _________________
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 08/07/13 20:58 Sujet du message: |
|
|
Ben utilise une variable globale :O
Alternativement, tu pourrais utiliser "GetTriggerExecCount" comme ça, mais jte le conseille pas vraiment, ça fait bricole :
Jass: | set transparence_de_l_eau_2 = ( -25.00 * CosBJ( ( 360.00 * GetTriggerExecCount(GetTriggeringTrigger()) ) / udg_douze_heures_virtuelles ) ) + 25 |
_________________
|
|
Revenir en haut |
|
|
Ectelion Membre reconnu
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
|
Posté le: 09/07/13 09:24 Sujet du message: |
|
|
Tirlititi a écrit: | Ben utilise une variable globale :O |
Ouais, mais prend celles du vJass, comme ça on est moins perdu (et puis lorsqu'on est sur un gros projet, chercher sa variable parmi 784115551054 différentes du même type, ça devient très vite énervant). _________________
Inactif(Enfn presque) |
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 09/07/13 10:43 Sujet du message: |
|
|
Il suffit de les nommer correctement, c'est la base lorsqu'on développe un programme. _________________
|
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 09/07/13 23:04 Sujet du message: |
|
|
D'accord, merci.
Mais vous n'avez pas vraiment répondu à une de mes questions. Est ce que les variables locales permettent d'éviter les memory leaks ou est ce qu'il vaut mieux faire comme dans le tuto, c'est à dire passer par une variable udg qu'on détruit ensuite ? Mon objectif est d'éviter le leak parce que ma carte a des déclencheurs très lourds que j'ai du mal à optimiser.
Ah, et une autre question aussi...
J'appartiens à la secte des Linuxiens et je fais tourner warcraft sur Linux avec un émulateur windows. Le problème, c'est que ça marche pas super super bien. J'utilise wine. Est ce que vous connaissez un émulateur plus performant que wine ? _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 09/07/13 23:21 Sujet du message: |
|
|
Wine Is Not an Emulator
Pense à créer un sujet pour chaque question (oui oui c'est chiant mais ca permet de construire une base de donnée accessible facilement avec l'outil recherche). _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 10/07/13 01:38 Sujet du message: |
|
|
Les leaks n'ont pas vraiment de rapport avec le variables locales / globales (sauf les handles non-nullifiés.. mais c'est une autre histoire). L'apport principal des variables locales est d'avoir des variables uniques, non accessible en dehors de la fonction et spécifique à celle-ci. En général, dès que tu n'as pas besoin de la variable en dehors de la fonction, tu utilises une locale. Sinon une globale. C'est juste un coup à prendre. _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 10/07/13 09:25 Sujet du message: |
|
|
Wine n'est pas un émulateur tel que son nom l'indique, les programmes ELF et Win32 sont conçus pour tourner sous architecture x86, donc les instructions sont les mêmes, la principale différence consiste dans le format du fichier; au lancement du programme le système d'exploitation lit les entêtes afin de mapper correctement le programme en mémoire vive en résolvant les liens dynamiques. Un système d'exploitation peut donc tout à fait exécuter des programmes de différents formats de la même manière que Word lis aussi bien les .doc que les .rtf.
La principale difficulté se trouve dans les appels à l'API Win32, c'est à dire aux fonctions spécifiques à Windows tel que DirectX. Wine est donc un projet où ils ont recodé une grande partie des librairies Windows en s'appuyant notamment sur la documentation MSDN.
Au final les performances de Wine sont équivalentes à celles de Windows, quelques fois elles peuvent même être supérieure parce que par exemple l'allocation mémoire est un peu plus performante sous Linux que sous Windows. Pour les applications 3D outre le fait que Wine mette du temps à implémenter les nouvelles versions de DirectX, la librairie DirectX de Wine est un wrapper OpenGL, les performances peuvent varier d'une opération à une autre.
DirectX 8 ne pose normalement pas de problème à Wine, Warcraft3 étant codé pour pouvoir également tourner sous OpenGL ce serait sans doute plus performant, pour cela il faut ajouter à la ligne de commande le paramètre -opengl. Si ce n'est toujours pas cela alors c'est peut être l'accélération matérielle OpenGL qui n'est pas exploitée sur ton ordinateur, auquel cas tu as MESA qui calcul tout sur ton processeur, peut être que ton option dans le fichier de config de MESA sur l'accélération matérielle est tout simplement désactivé.
Il n'existe rien de mieux que Wine, tout ce que tu trouveras sont des fork de Wine où ils ont mis une interface graphique et qu'ils te font payer... _________________
|
|
Revenir en haut |
|
|
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 10/07/13 16:50 Sujet du message: |
|
|
Faudrait renommer ce topic "au rythme de mes questions" _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
|