[VB.Net] Performance !!!

cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 3 août 2010 - 30 avril 2007 à 06:39
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 2 mai 2007 à 13:48
Bonjour, sur un processeur de 32bits quand on déclare :


Dim num As ULong


ULong est codé sur 64bits ?


Si oui, sur un cpu de 32bits, la variable aura t-elle un defaut de performance ?


Dans mon cas, par sourci de performance, j'ai un CPU de 32 bits, ne serait-il pas plus pratique de la déclarer comment :


Dim num As UInteger


??


=> Il y a t-il un lien avec la function "UIntPtr" ?? http://msdn2.microsoft.com/fr-fr/library/system.uintptr(VS.80).aspx


Merci pour vos futurs réponse ;-)

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2007 à 09:52
Il n'y a rien de plus rapide que d'utiliser la taille d'un registre cpu donc 32 bits sur cpu 32.

ciao...
BruNews, MVP VC++
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 10:02
Ne pas confondre la profondeur de ton CPU et celle de tes variables.

Sous .Net tout est gérer par le framework. Le Framework est une couche qui s'interface entre ton code et le processeur. Pour etre exact, il s'interface même entre ton code et les couche systèmes de Windows puisque le framework n'est qu'une surcouche des api Windows.
Ta variable ULong est une variable 64 bits dans l'environnement du framework. Elle ne représente absolument rien au niveau processeur. Le framework se chargera de toute façon de faire la conversion si necessaire, lui travaillant systématiquement en 64bits.

A l'heure actuelle même sur des systèmes 64 bits (processeurs + Windows, y compris Win2003) très très peu de logiciels du marché fonctionnent en 64bits.

De même qu'il plus performant tant en rapidité que en ressources de travailler avec des long (32 bits) avec VB6, plutot que avec des bytes ou integer, et le framwork étant une architecture 64 bits, il est fort à parier qu'il sera plus performant de travailler avec des long (64bits) plutot qu'avec des integers.
Cependant les différences de performances ne devraient pas etre visible dans une utilisation normale.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2007 à 10:34
Que serait "une architecture 64 bits" sur un cpu 32 ???

int64 est défini sur cpu32 comme:
typedef int64 {
  int lo;
  int hi;
}

addition se fera par force en 2 instructions: ADD suivi de ADC.
Sur cpu64, un simple ADD suffira puisque la valeur entre dans un registre.

Il est clair qu'une instruction est préférable à 2.

ciao...
BruNews, MVP VC++
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 10:51
Je suis d'accord avec toi Brunews, mais cela est vrai lorsqu'on travaille directement sur le processeur.

Hors ici, il faut passer la couche du framework. Que fait-il lui ????

Etant compatible avec les architectures 32 et 64 bits, possède-t-il une double déclaration de tous les types de variables (et donc des fonctions travaillant avec) et fait-il un choix suivant le proco, ou  possède-t-il une déclaration générique ménageant la chèvre et le choux entre le 32 et 64 bits.
Personellement je ne connais pas la réponse. Ce que je sais, c'est qu'il travaille de base en 64 bits, et donc l'architecture visible au niveau programmeur est une archi 64bits et à utiliser en tant que telle.
Ce qui fait ensuite en interne pour s'adapter à l'architecture réelle non seulement du proco mais surtout de l'OS, je n'en sais rien. Mais j'imagine que raisonner en 32bits sur .Net peut ammener à des pertes de performances, même si au final tout est retraduit en 32bits pour s'adapter au proco.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
2 mai 2007 à 13:48
Salut,


Bah tout ce résume à ça : Que fait-il lui ????

On le saurat jamais sans son source.

Donc il serait peut être plus simple de faire des essais de chronométrage.

Ou de changer de langage, pour avoir une meilleur idée de ce qui se passe côté CPU quand on fait a=b+c.
0
Rejoignez-nous