Question existantielle : place ou rapidité

Résolu
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 22 août 2005 à 20:34
 steve_clamage - 25 août 2005 à 08:34
J'aimerai savoir ce que vous feriez dans ce cas:



avec un gros projet



j'ai la possibilité d'accélérer considérablement sa vitesse d'exécution

mais cela entrainerai une utilisation beaucoup plus importante de la mémoire

(mémorisation de chaines de caractères au lieu de les reparcourir un nombre incalculable de fois

sachant que ce ne sont pas des parcours simples, mais traitant bcp de cas particuliers

)



feriez vous ce changement?

quitte à ce que l'utilisation mémoire soit énorme

ou pas?



merci de votre lecture & de vos avis sur la question
___________________________________________________________
Magicalement
Nono

41 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
23 août 2005 à 21:33
mettons une méthode, retour void alors

___________________________________________________________
Magicalement
Nono
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 août 2005 à 21:36
http://www.cppfrance.com/forum.v2.aspx?ID=458636
Une explication qui me convient, si on enlève les messages d'Arnotic
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
23 août 2005 à 21:38
BN : Tu peux passer une fonction membre d'un objet comme callback ordinaire --> mem_fun_t<Result, X>.

http://www.iam.unibe.ch/~til/documentation/stl-3.3/mem_fun_t.html

Cordialement,
Xterminhate.
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
23 août 2005 à 21:39
Désolé pour la mise en page, sous linux, ça foire à mort avec le script de saisie en mode évolué :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 août 2005 à 21:44
Désolé mais je ne vois pas sur cette page de fonction non static passée comme param pour un callback.
exemple avec EnumWindows() qui demande une fonction de rappel en 1er param.

ciao...
BruNews, MVP VC++
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
23 août 2005 à 23:05
Je reconnais avoir dit une belle connerie ! Ca m'apparendra à la fermer plus souvent!

Effectivement, il faut passer, et le pointeur vers l'objet, et le pointeur de fonction membre pour faire un callback à la "mode" C++. Pas de miracle alors avec l'API en C de win32....

Xterm-in'Hate (qui est tres fatigué ;-)
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
23 août 2005 à 23:12
Pour les callbacks en C++, je pense qu'on peut recommender BOOST::signals :

http://www.boost.org/doc/html/signals.html

Cordialement,
Xterm-in'Hate.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 août 2005 à 23:22
et vecchio pas de soluce non plus ?
J'attendrai donc démonstration contraire pour changer d'idée mais je reste dispo, faut pas être borné.

ciao...
BruNews, MVP VC++
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
23 août 2005 à 23:36
Un pointeur de fonction membre est un offset et non une adresse....

Cordialement,
Xterminhate.
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
24 août 2005 à 10:46
salut,

BN tu peux pas avoir de fonction callback qui soit une fonction non
statique d'une classe car la convention d'appel d'une callback
(__stdcall) n'est pas la meme que celle d'une fonction non statique
d'une classe (ou le this est empilé avant les param).

ca n'empeche pas que les fonctions non statiques des classes ont des adresses fixes.

Elles sont commes les fonctions classiques, avec juste en plus, l'empilement implicite de this ...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2005 à 10:56
this serait donc aussi à adresse fixe ?

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 août 2005 à 15:18
Quand tu fais a.f();
en gros ca empile &a (qui représentera this) ou ca le met dans un registre, puis les autres paramètres sont passés de manière normale
Ca te convient pas comme explication?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 août 2005 à 15:39
BruNews, si tu pense que la fonction n'est pas à un endroit fixe, c'est que tu dois penser qu'elle dépend de l'objet et que la position est déterminée à l'instanciation de l'objet. Pourtant, regarde ce code, il marche sans problème:
#include <windows.h>

class A
{
public:
void f()
{
MessageBox(0, "A::f()", "A::f()", 0);
}
};

int main()
{
((A*)0)->f();
}

Il marche car f ne fait aucune indirection sur this
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 août 2005 à 17:29
Je continue mon petit monologue: voila le code attendu pour que tu changes d'avis:

#include <windows.h>

char szClassName[32];

class A
{
public:
BOOL EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
GetClassName(hWnd, szClassName, 32);
MessageBox(hWnd, szClassName, szClassName, 0);
return 0;
}
};


int main()
{
__asm
{
push 0
push A::EnumWindowsProc
call dword ptr[EnumWindows]
}
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2005 à 18:37
ok ok, je note.
Quelle chienlit ces classeries, rien de tel que l'asm !!!

ciao...
BruNews, MVP VC++
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
24 août 2005 à 19:01
Merci vecchio : j'aime bien ce genre de démonstration!

Mais sais-tu la poursuivre avec des méthodes (fonctions membres virtuelles) de classe ? ;-)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 août 2005 à 19:19
Avec des fonctions virtuelles je ne vais pas essayer, je ne prétends même pas que c'est possible. Et puis la notion de virtuel n'a aucun intérêt ici car si tu regarde bien, j'utilise la fonction membre sans instancier d'objet. Dieu sait ce que vaut this à l'intérieur
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
24 août 2005 à 20:05
vecchio, j'aurai js osé faire ça sur une fonction membre non statique...
chapo

___________________________________________________________
Magicalement
Nono
( www.ouverture-facile.com niv34)
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
24 août 2005 à 21:22
niv 34... respect ;-)
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
24 août 2005 à 22:17
hier au 7, today au 34 apres que je lui ai dit que j'y etais aussi... ca sent le bluff !!!

cela dit ca me fait chier de chercher des infos sur ces putains de pigeon, si t'as le lien sur le level d'apres :)
0
Rejoignez-nous