Как профилировать время компиляцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как профилировать время компиляции

Сообщение Anonymous »

Со временем время компиляции проекта увеличилось. Но я не знаю, где самое длинное время компиляции. Один из них компилируется в EXE и заботится о платформе и рендеринг с OpenGL. Другой собирает DLL и обрабатывает большую часть моего прикладного бизнеса, например, рисование пользовательского интерфейса и данных обработки. Затем EXE загрузит часть DLL во время выполнения. Часть EXE имеет только 1000 строк кода, в то время как часть DLL имеет 3000 строк кода (NO, включая общий CPP) < /p>
. src = "https://i.sstatic.net/jfu3lqd2.png"/>

exected and stare and stare and share andpep share and exected andpep share and exected and stare and extered and share share and exected and share share and exed and share share andpep share and extamed. Часть EXE действительно уменьшается до 0,4 секунды, DLL имеет едва ли какого -либо заметного эффекта < /p>
Также код написан в стиле процедурных C, поэтому нет сумасшедших вещей, таких как шаблоны, объекты или наследство
Единственное различие, которое я могу видеть в двух переводах. Компилятор работает и почему время компиляции так отличается. Я хотел бы знать, что кто -то сталкивается с этим, и как они справляются с этими < /p>
РЕДАКТИРОВАТЬ:
Пример кода из exe part < /p>
glActiveTexture(GL_TEXTURE0 + ImageSlot);
glBindTexture(GL_TEXTURE_2D, AppData->WhiteTestTexture.id);
glUniform1i(ShaderInput->UniformLocation[SUL_Texture0], ImageSlot);

ImageSlot++;

GL_DEBUG_ASSERT;

rlUpdateVertexBuffer(AppData->RectVertexBufferBlock, AppData->RectVertexData, VertexCount * sizeof(Vector4), 0);
rlUpdateVertexBuffer(ShaderInput->VertexBufferHandle[VB_ColorBuffer], AppData->RectColorData, VertexCount * sizeof(Vector4), 0);
rlUpdateVertexBuffer(ShaderInput->VertexBufferHandle[VB_TexCoordBuffer], AppData->RectTexCoordData, VertexCount * sizeof(Vector2), 0);

rlUpdateVertexBufferElements(AppData->RectIndexBuffer, AppData->RectIndexData, AppData->RectIndexDataCount * sizeof(unsigned int), 0);

glDrawElements(GL_TRIANGLES, AppData->RectIndexDataCount, GL_UNSIGNED_INT, 0);
rlDisableVertexArray();
rlDisableVertexBuffer();
rlDisableVertexBufferElement();
< /code>
Некоторые вызовы RL были просто оберткой или прямыми вызовами GL < /p>
Команда сборки:
exe: < /p>
cl -w -Zi /source-charset:utf-8 /MD /Gm- ..\code\d_main.cpp raylib.lib /link user32.lib opengl32.lib winmm.lib gdi32.lib shell32.lib ole32.lib comdlg32.lib /libpath:..\lib /out:DAPP.exe
< /code>
dll: < /p>
cl /source-charset:utf-8 -w -Zi /Gm- /MD ..\code\d_interface.cpp raylib.lib -LD /link /PDB:DSourceInterface_%timestamp%.pdb /dll user32.lib opengl32.lib winmm.lib gdi32.lib shell32.lib ole32.lib comdlg32.lib /libpath:..\lib /out:DSourceInterface.dll /export:Interface_IBabyDispose /export:Interface_IBabyInit /export:Interface_IBabyLoop


Подробнее здесь: https://stackoverflow.com/questions/795 ... mpile-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»