La splendeur et la pauvreté de l'OLP - page 3

 
Integer:

En fait, ce n'est pas le compilateur qui était testé, mais deux méthodes pour résoudre le même problème. Ce n'est pas la façon dont le réfrigérateur ronronne qui compte, c'est la façon dont il gèle.

C'est un problème de jet et c'est bruyant...

Lesfonctions virtuelles ne sont jamais en ligne, donc avec l'optimisation activée, il n'y a pas de raison de comparer avec des exemples simples si le changement est bien fait. C'en est une.

Qui a dit que la POO est plus rapide ? Plus facile, plus logique, mais guère plus rapide. Ça fait deux.

Si vous ne l'aimez pas, ne l'utilisez pas.

 
Integer:
Après cela, il y a eu deux autres variantes de test, 2 - avec des fonctions non vides, 3 - avec des fonctions uniques, les résultats étaient similaires. La variante 1 a toujours été réalisée en C#, mais le résultat a été inverse.

J'ai vu ces options. Ils s'intègrent également dans le schéma en ligne et sont bien optimisés.

La variante avec C# montre une autre erreur trompeuse due à une mauvaise compréhension du travail de l'optimiseur de code. Le code n'a pas été montré et le compilateur dotnet a plusieurs fois plus de méthodes d'optimisation qui peuvent résoudre les cas dégénérés des exemples de test comme les noix. Je viens de donner un exemple d'un cas simple de conversion d'une fonction virtuelle en fonction régulière dans des cas simples. Nous allons également activer cette optimisation (dans des cas simples comme ce test) et vous verrez vous aussi comment une méthode "virtuelle" prend soudainement le dessus sur une méthode directe.

 
TheXpert:

Un problème de dérapage et de bruit...

Lesfonctions virtuelles ne sont jamais en ligne, donc avec l'optimisation activée, il n'y a pas de raison de comparer avec des exemples simples si le changement est bien fait. C'en est une.

Qui a dit que la POO est plus rapide ? Plus facile, plus logique, mais guère plus rapide. Ça fait deux.

Si vous ne l'aimez pas, ne l'utilisez pas.

Eh bien, ce n'est pas un problème du tout. C'est juste une expérience avec des résultats et une conclusion.

J'aime ça, je n'aime pas ça. Utiliser "lent" au lieu de "rapide" n'est pas logique.

 
Renat:

J'ai vu ces options. Et elles s'intègrent également dans le schéma d'inlining et sont bien optimisées.

La variante avec C# montre une autre erreur trompeuse causée par une mauvaise compréhension du travail de l'optimiseur de code. Le code n'a pas été montré et le compilateur dotnet a plusieurs fois plus de méthodes d'optimisation qui peuvent résoudre les cas dégénérés des exemples de test comme les noix. Je viens de vous donner un exemple de cas simple de conversion d'une fonction virtuelle en fonction régulière dans des cas simples. Nous allons également activer cette optimisation (dans des cas simples comme ce test) et vous verrez vous aussi comment une méthode "virtuelle" prend soudainement le dessus sur une méthode directe.

Il semble que tout résultat que j'obtiendrai sera faux et trompeur.

- Pour quoi ?

- Indien, monsieur.

(xf Lone Ranger)

J'ai beau essayer, il n'y a aucun moyen d'obtenir un fonctionnement plus lent que la méthode virtuelle via le commutateur. J'ai essayé, mais désolé, ça n'a pas marché.

 

Voici en annexe le premier test C#. Voici les résultats

Dossiers :
test.zip  66 kb
 

Les preuves viendront de l'autre côté. Ou encore juste des mots.

En général, je ne suis intéressé que par les faits.

Bien que je sache déjà que la POO est plus lente, mais elle offre des commodités bien concrètes

 
Vinin:

Les preuves viendront de l'autre côté.

Une preuve de quoi ?
 
TheXpert:
Une preuve de quoi ?
Andrei, tu as le désir de prouver que Dima a tort. Alors donne-les moi.
 

Pourquoi avez-vous besoin de la POO pour écrire des jouets ? )

 

Quoi qu'il en soit, il est bon que la question ait été soulevée.

Nous travaillons constamment à l'amélioration du compilateur et de son optimiseur. Nous allons maintenant nous concentrer sur l'optimisation des appels de méthodes virtuelles (de nombreuses méthodes virtuelles peuvent être transformées en méthodes directes).

Raison: