Как было отмечено, #incindows.h, включая windows.h, замедляет время компиляции.Вы можете использовать предварительно скомпилированные заголовки или выполнять хорошую работу по изоляции вызовов Windows только для модулей, которым они нужны, чтобы помочь с этим.
Кроме того, вы можете добавить эти определения preproc, прежде чем windows.h включит вот так:
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <windows.h>
Это уменьшит количество определений из windows.h и вложенных заголовочных файлов.Позже вы можете обнаружить, что вам нужно удалить худое и среднее, но попробуйте сначала и подождите, пока компилятор не пожалуется на отсутствующее определение.
Конфликты пространства имен являются допустимым недостатком, но технически ничего не имеютделать с эффективностью, если вы не считаете эффективность вашего личного использования времени.Учитывая, сколько тысяч определений будет добавлено в ваше пространство имен, конфликты обязательно возникнут в какой-то момент, и это может сильно раздражать.Просто используйте практику разделения ваших вызовов Windows на модули, и все будет в порядке.Для этого поместите #include windows.h в файл .cpp, а не в файл .h.
Я не вижу оснований полагать, что на производительность исполняемого файла во время выполнения повлияет включение windows.h.Вы только добавляете большое количество определений в контекст, используемый компилятором.Вы даже не помещаете все определения в ваш скомпилированный код - просто выделения, вызовы функций и ссылки на основе любых определений, используемых в вашем исходном коде (.cpp).
Можно сделать еще один аргумент, чтоТипы и функции Windows API по своей природе расточительны или неэффективны.Т.е., если вы хотите создать файл, есть некоторая чудовищная структура, которую нужно передать Windows API.Тем не менее, я думаю, что большая часть этого - глупое мышление.Оцените проблемы производительности Windows API в каждом конкретном случае и по возможности замените неэффективный код.