Программирование тонких программ C++ (как uTorrent) для [закрывших] окон

где a - массив

?a
40
задан Andrioid 20 June 2009 в 08:18
поделиться

7 ответов

Библиотека шаблонов Windows ориентирована на то, что вы хотите делать. Это легкая, основанная на шаблонах оболочка C ++ для Win32 API. С его помощью вам не придется мучиться с прямым кодированием Win32, но он не добавляет много накладных расходов, как MFC.

17
ответ дан 27 November 2019 в 01:49
поделиться

Если вы хотите оптимизировать для минимально возможного объема памяти, и вы не против прыгнуть через кучу обручей, о которых была изобретена .NET CLR, чтобы позаботиться о вас, тогда напишите прямое приложение Win32API и подключение к GDI + - лучший способ. Петцольд был исчерпывающим справочником.

На самом деле, это своего рода дурацкая затея, поскольку среда выполнения .NET будет загружена в память ОС независимо от того, использует ли ваше приложение ее или нет, поэтому вы может также дать ссылку на него.

8
ответ дан 27 November 2019 в 01:49
поделиться

uTorrent написан на C ++ и использует устаревший Win32 API. Google Chrome тоже написан таким образом, так почему бы не скачать исходный код и не изучить его код?

10
ответ дан 27 November 2019 в 01:49
поделиться

Notepad ++ также очень быстрая, оптимизированная и очень полезная программа для ОС, которая может вдохновить вас. Его философия похожа на uTorrent. Он использует старый добрый Win32 api, который по-прежнему должен быть самым быстрым из возможных. в Windows.

Если вы хотите проявить творческий подход, демонстрационная сцена - идеальное место для идти. Хотя их код не всегда открыт.

1
ответ дан 27 November 2019 в 01:49
поделиться

Общие: для небольших исполняемых файлов #define WIN32_LEAN_AND_MEAN и VC_EXTRALEAN (при условии VS). Не компилируйте с отладочными символами (вы наверняка это знали). Используйте меньше библиотек и будьте пользователем, чтобы связывать только те части библиотек, которые вам нужны (компоновщик VC неплохо справляется с этим, но не трогайте optlink, если можете помочь).

Удалите заголовки перемещения: перейдите к http://www.paehl.de/cms/oldtools и выполните поиск "ReduceEXE" (прямая ссылка для скачивания: http://www.paehl.de/reduce.zip ).

Запустите исполняемый упаковщик: http://upx.sourceforge.net/ ... Он использует больше памяти во время выполнения и запускается немного медленнее, но файл НАМНОГО меньше.

Если вы заботитесь о размере файла больше, чем о скорости, VC имеет возможность "оптимизировать по размеру", который отключает некоторые вещи, такие как разворачивание цикла и включение функций.

Если вы хотите стать хардкорным (и не заботитесь обо всех преимуществах программной инженерии), попробуйте использовать меньше классов, предпочитая типы POS без виртуальных функций. Википедия предполагает, что 6-13% времени выполнения программы тратится на виртуальные вызовы. Кроме того, сами vtables занимают (НЕМНОГО) память, а объем памяти size_t в начале каждого экземпляра класса (который имеет виртуальную функцию) выделяется для указателя vtable. IOW, «чистый C» может оказаться немного быстрее (хотя, если вы обнаружите, что эмулируете классы с помощью указателей на функции, вернитесь к C ++).

вместо этого предпочитая типы POS без виртуальных функций. Википедия предполагает, что 6-13% времени выполнения программы тратится на виртуальные вызовы. Кроме того, сами vtables занимают (НЕМНОГО) память, а объем памяти size_t в начале каждого экземпляра класса (который имеет виртуальную функцию) выделяется для указателя vtable. IOW, «чистый C» может оказаться немного быстрее (хотя, если вы обнаружите, что эмулируете классы с помощью указателей на функции, вернитесь к C ++).

вместо этого предпочитая типы POS без виртуальных функций. Википедия предполагает, что 6-13% времени выполнения программы тратится на виртуальные вызовы. Кроме того, сами vtables занимают (НЕМНОГО) память, а объем памяти size_t в начале каждого экземпляра класса (который имеет виртуальную функцию) выделяется для указателя vtable. IOW, «чистый C» может оказаться немного быстрее (хотя, если вы обнаружите, что эмулируете классы с помощью указателей на функции, вернитесь к C ++).

5
ответ дан 27 November 2019 в 01:49
поделиться

Демо-сцена это группа людей, которые проводят свое свободное время, пытаясь создать впечатляющие и очень маленькие исполняемые файлы, которые обычно рендерит что-то в 3D под музыку. Часто вся демонстрация (код, музыка, 3D-данные) компилируется в один исполняемый файл, который сжимается до 64 КБ или впечатляюще маленького размера для содержимого.

Вы можете черпать вдохновение из демонстраций, а изучение того, как они создаются, проинформирует вас о вашей одержимости созданием небольших исполняемых файлов.

Часто ключевым моментом является использование как можно большего количества сторонних DLL, установленных с Windows. Также требуется низкоуровневое индивидуальное кодирование всего остального.

7
ответ дан 27 November 2019 в 01:49
поделиться

The old "LIBCTiny" trick still works. With modern VC++ releases, you might need to turn of a few features.

Another good trick to know is the lstr* collection of functions in Kernel32. That's already in memory, so those functions might be a leaner choice.

5
ответ дан 27 November 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: