Как профилировать время компиляции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 -andpep share and exed and exed andpep share andpep share and exected cared andpper and share share and extred and share share and extep and extep and exected and share share andped and share 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++»