40 votes

Programmation de petits programmes C++ (comme uTorrent) pour Windows

J'ai toujours admiré le programme original uTorrent. Il était beau, faisait moins de 64 Ko, était extrêmement rapide et possédait toutes les fonctionnalités dont j'avais besoin. Malheureusement, le programme est fermé (et devient de plus en plus lourd chaque jour), alors je me tourne vers Stackoverflow pour trouver l'inspiration.

Quelles méthodes recommandez-vous pour écrire des programmes rapides, économes en mémoire et élégants sous Windows ?

Bien que C# (et le concept .NET dans son ensemble) soit une bonne idée, je suis plus intéressé par les réponses "puristes" et le défi d'écrire des logiciels efficaces et rapides pour la plate-forme Windows, comme le client uTorrent original. Cela ne me dérange pas d'allouer ma propre mémoire, de faire ma propre collecte de déchets et de créer mes propres structures de données.

Les recommandations de livres, d'articles, de bibliothèques, d'outils de développement intégrés (et même de moyens efficaces de faire entrer plus de caféine dans mon organisme) sont les bienvenues.

17voto

Eric Points 4139

La bibliothèque de modèles Windows est orientée vers ce que vous voulez faire. Il s'agit d'un wrapper C++ léger, basé sur des modèles, pour l'API Win32. Avec elle, vous n'avez pas besoin de passer par la douleur du codage direct de Win32, mais elle n'ajoute pas beaucoup de frais généraux comme MFC.

10voto

StackedCrooked Points 12247

UTorrent est écrit en C++ et utilise la bonne vieille API Win32. Google Chrome est également écrit de cette façon, alors pourquoi ne pas télécharger le code source et apprendre de leur code ?

8voto

Crashworks Points 22920

Si vous souhaitez optimiser l'empreinte mémoire la plus faible possible et que vous n'avez pas peur de sauter à travers un tas d'obstacles dont le CLR de .NET a été inventé pour s'occuper à votre place, alors écrire une application Win32API directe et se connecter à GDI+ est la voie à suivre. Petzold était la référence définitive.

En réalité, il s'agit d'une erreur de parcours, puisque le runtime .NET sera chargé dans la mémoire du système d'exploitation, que votre application l'utilise ou non, alors vous pouvez tout aussi bien établir un lien avec lui.

7voto

Tom Leys Points 10453

El Scène de démonstration est un groupe de personnes qui passent leur temps libre à essayer de faire des exécutables impressionnants et très petits, qui rendent généralement quelque chose en 3d sur de la musique. Souvent, l'ensemble de la démo (code, musique, données 3d) se compile en un seul exécutable qui est compressé à 64k ou une taille impressionnante pour le contenu.

Vous pourrez vous inspirer des démonstrations et apprendre comment elles sont faites éclairera votre obsession de créer de petits exécutables.

Souvent, la solution consiste à exploiter le plus grand nombre possible de DLL de tiers installées avec Windows. En outre, un codage personnalisé de bas niveau est nécessaire pour tout le reste.

5voto

MSalters Points 74024

L'ancien "LIBCTiny" L'astuce fonctionne toujours. Avec les versions modernes de VC++, vous devrez peut-être désactiver certaines fonctions.

Un autre bon truc à connaître est le lstr* collection de fonctions dans Kernel32. C'est déjà en mémoire, donc ces fonctions pourraient être un choix plus léger.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X