powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какая разница между сборки под дебагом и релизом?
19 сообщений из 44, страница 2 из 2
Какая разница между сборки под дебагом и релизом?
    #39891297
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто сидит на вижуал-сях? Можете собрать в дебаге и релизе этот сорсик?
Тяпничный бенчмарк CPU (part-1)
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891303
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто приколоться (минуты:секунды,десятые).
Код: plaintext
1.
2.
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
[0:32,5] cl -O2 -Og -Ox -Oy
[2:15,6] cl -Zi
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891306
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Кто сидит на вижуал-сях? Можете собрать в дебаге и релизе этот сорсик?
Тяпничный бенчмарк CPU (part-1)
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891308
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, прога > картинка.ppm
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891352
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, шикарно.

А какой размер бинарей вышел?
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер бинаря под gcc:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/bin/bash -v

rm *exe

OPTIONS="-O3 -march=native"

g++ $OPTIONS card-raytracer.cpp  -o card-raytracer-cpp.exe
g++ -g1 card-raytracer.cpp       -o card-raytracer-cpp-minimal-debug.exe
g++ -g  card-raytracer.cpp       -o card-raytracer-cpp-default-debug.exe
g++ -g3 card-raytracer.cpp       -o card-raytracer-cpp-maximal-debug.exe



$ ls
Код: plaintext
1.
2.
3.
4.
-rwxr-xr-x 1 mayton mayton 28488 Nov 19 22:42 card-raytracer-cpp-default-debug.exe*
-rwxr-xr-x 1 mayton mayton 13008 Nov 19 22:42 card-raytracer-cpp.exe*
-rwxr-xr-x 1 mayton mayton 89968 Nov 19 22:42 card-raytracer-cpp-maximal-debug.exe*
-rwxr-xr-x 1 mayton mayton 20304 Nov 19 22:42 card-raytracer-cpp-minimal-debug.exe*


От 13 до 90килобайт в зависимости от режима отладки.
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891388
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,

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

отсюда получается разница - то, что не нужно в боевой версии(релиз) может быть отключено(например обнуление переменных, доп. вывод логгирования, точек остановок и т.д.)... или например включено(оптимизация кода при его генерации с учётом логики вызовов и т.п. вещи)...


(круглый)
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891558
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А какой размер бинарей вышел?
Сделал корректный тест.
32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 (MSVC 2010)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 /O2    maximize speed
 /Oi[-] enable intrinsic functions
 /Ot    favor code speed
 /Ox    maximum optimizations
 /Oy[-] enable frame pointer omission 
 /GL[-] enable link-time code generation
 /arch:<SSE|SSE2|AVX>
   minimum CPU architecture requirements, one of:
   SSE - enable use of instructions available with SSE enabled CPUs
   SSE2 - enable use of instructions available with SSE2 enabled CPUs
   AVX - enable use of Intel(R) Advanced Vector Extensions instructions
 /Zi    enable debugging information
 /MP[n] use up to 'n' processes for compilation
 /MD    link with MSVCRT.LIB
 /MDd   link with MSVCRTD.LIB debug lib
 /MT    link with LIBCMT.LIB
 /MTd   link with LIBCMTD.LIB debug lib
Разбил вывод на логические группы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
seconds  bytes compiler
   34.6   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MD
   31.7   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MD
   27.7  10240 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MD
   28.4   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MD
--
   34.8  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MDd -Zi
   32.2  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MDd -Zi
   28.6  12288 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MDd -Zi
   29.5  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MDd -Zi
--
   34.0  69632 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MT
   31.9  69632 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MT
   28.1  69120 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MT
   28.8  68608 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MT
--
   35.0 338432 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MTd -Zi
   32.3 338432 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MTd -Zi
   29.2 336896 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MTd -Zi
   29.8 336896 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MTd -Zi
--
Total test time: 00:24:54 (average over 3 run for each compilation)

P.S.
Скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
/* REXX-Regina_3.9.3(MT) 5.00 5 Oct 2019 (64 bit) */
cmd = '.exe'
cl = 'cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL'
arg.0  = 16
arg.1  = '-MD'
arg.2  = '-arch:SSE -MD'
arg.3  = '-arch:SSE2 -MD'
arg.4  = '-arch:AVX -MD'
arg.5  = '-MDd -Zi'
arg.6  = '-arch:SSE -MDd -Zi'
arg.7  = '-arch:SSE2 -MDd -Zi'
arg.8  = '-arch:AVX -MDd -Zi'
arg.9  = '-MT'
arg.10 = '-arch:SSE -MT'
arg.11 = '-arch:SSE2 -MT'
arg.12 = '-arch:AVX -MT'
arg.13 = '-MTd -Zi'
arg.14 = '-arch:SSE -MTd -Zi'
arg.15 = '-arch:SSE2 -MTd -Zi'
arg.16 = '-arch:AVX -MTd -Zi'

parse arg count
say 'seconds' ' bytes' 'compiler'
call time r
do i = 1 to arg.0
 address command (cl arg.i '.cpp') with output append stream 'NUL'
 size = stream(cmd,'C','QUERY SIZE'); call stream cmd,'C','CLOSE'
 time = time(e)
 do count
   address command (cmd) with output append stream 'NUL'
 end
 time = (time(e) - time) / count
 say format(time,5,1) format(size,6) cl arg.i
end
say '--'
say 'Total test time:' time(n,format(time(r),,0),s) '(average over' count 'run for each compilation)'
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891567
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, ну ничоси ты работу проделал. Спасибо.

Замечено резкое ожирение у тех бинарников которые линкуют MSVCRTD.LIB.
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891577
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Basil A. Sidorov, ну ничоси ты работу проделал
Оно компиляется одной командой за пару секунд.
Если не учитывать время на прогон собственно теста, то, в основном, потребовалось немного повспоминать REXX. Ну и ачипятки поправить - куда же без них...
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891594
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   34.6   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MD
   31.7   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MD
   27.7  10240 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MD
   28.4   9728 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MD
--
   34.8  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MDd -Zi
   32.2  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MDd -Zi
   28.6  12288 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MDd -Zi
   29.5  11776 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MDd -Zi
--
   34.0  69632 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MT
   31.9  69632 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MT
   28.1  69120 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MT
   28.8  68608 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MT
--
   35.0 338432 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -MTd -Zi
   32.3 338432 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE -MTd -Zi
   29.2 336896 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MTd -Zi
   29.8 336896 cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:AVX -MTd -Zi



Я смотрю что для Вижуалов отладочная инфа не сильно много % занимает.
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891599
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я смотрю что для Вижуалов отладочная инфа не сильно много % занимает.
Собственно отладочная информация записана в отдельном pdb-файле:
Код: plaintext
1.
2.
3.
4.
5.
6.
cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MDd -Zi
   12288 .exe
 1674240 .pdb

cl -nologo -MP -Oy -O2 -Ox -Ot -Oi -GL -arch:SSE2 -MTd -Zi
  336896 .exe
 1674240 .pdb

Хотя в хрюниксах точно так же, только символы в отдельный каталог складываются.
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891661
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
От 13 до 90килобайт в зависимости от режима отладки.
Попробуйте с дебагом, но -Os
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891664
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я смотрю что для Вижуалов отладочная инфа не сильно много % занимает.

Там обычно отдельный pdb файл просто
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891666
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня этот Vector вообще не собирается =)
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39891683
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin
У меня этот Vector вообще не собирается =)

Какая ошибка?
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39892357
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Aklin
У меня этот Vector вообще не собирается =)

Какая ошибка?
Прошу прощения, на другой машине заработало, не знаю, в чем дело.
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39892360
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
21608 Nov 21 14:24 sql-o0-g.o
17472 Nov 21 14:24 sql-o0.o
42024 Nov 21 14:26 sql-o2-g.o
13056 Nov 21 14:26 sql-o2.o
41976 Nov 21 14:23 sql-o3-g.o
13056 Nov 21 14:23 sql-o3.o
35312 Nov 21 14:23 sql-os-g.o
13024 Nov 21 14:24 sql-os.o
...
Рейтинг: 0 / 0
Какая разница между сборки под дебагом и релизом?
    #39894732
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
............................................

Ковыряюсь с некоторыми open-source проектами, заметил, что дебажные конфигурации обычно Multi-threaded Debug DLL (/MDd) , а релизные - Multi-threaded (/MT)

Вопрос. Для чего дебаг-конфигурации - c dll? Это ускоряет сборку, упрощает отладку, или что-то другое?
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какая разница между сборки под дебагом и релизом?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]