Siempre he admirado el programa uTorrent original. Se veía genial, tenía menos de 64kb, era extremadamente rápido y tenía todas las características que necesitaba. Lamentablemente, el programa es de código cerrado (y se está volviendo cada vez más inflado), así que vengo a Stackoverflow en busca de inspiración.Programación de programas delgados en C++ (como uTorrent) para Windows
¿Qué métodos recomienda para escribir programas rápidos, eficientes en memoria y elegantes en Windows?
Si bien C# (y todo el concepto de .NET) son buenas ideas, estoy más interesado en las respuestas "puristas" y en el desafío de escribir software eficiente y rápido para la plataforma de Windows, al igual que el cliente uTorrent original. No me importa asignar mi propia memoria, hacer mi propia recolección de basura y crear mis propias estructuras de datos.
Recomendaciones sobre libros, artículos, bibliotecas, IDEs (incluso formas eficientes de obtener más cafeína en mi sistema) bienvenidos.
jaja, la parte sobre la cafeína me hizo reír. Bueno, no creo tener una respuesta, pero sé de hecho que los puristas del hardcore recurrirán al ensamblaje, pero la programación de algo tan complicado como un cliente de torrents en ensamblaje sería casi imposible. Creo que si escribió su propio código (se abstuvo de usar cualquier biblioteca) podría obtener fácilmente un programa C/C++ de menos de 64kb. Si escribió en ensamblaje, probablemente podría lograrlo en 1kb. – ldog
AFAIK uTorrent está lleno de compresor, por lo que su tamaño físico es pequeño. Pero en tiempo de ejecución, se descomprime y usa mucha más memoria. El pequeño tamaño ejecutable se logra al evitar el uso de muchas bibliotecas, especialmente la biblioteca estándar de C++ y las instalaciones de flujo, y crear sustitutos escritos específicamente para el programa. (ver artículo en Wikipedia) – Vanuan
Vanuan: "mucha más memoria" es un poco exagerado. Los empacadores ejecutables usualmente logran índices de compresión de hasta 50%, no mucho más. Entonces, mientras μTorrent tiene que ser desempaquetado en la memoria para funcionar, esto tomará alrededor de 500 KiB. Apenas para las máquinas de hoy. – Joey