Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

ускорить работу компайлера

583  1 2 3 4 все
Murr патриот24.03.13 22:29
Murr
NEW 24.03.13 22:29 
в ответ anly 24.03.13 22:21
мне казалось,
------
Тебе НЕ казалось - Винда выгружает то, что ей кажется не нужным...
#41 
Murr патриот24.03.13 22:32
Murr
NEW 24.03.13 22:32 
в ответ anly 24.03.13 22:21
Посмотри еще раз в сторону Виртуального Диска... там много не надо, но если сбрасывать только обьектники - будет не много и быстро...
#42 
anly коренной житель24.03.13 23:22
anly
NEW 24.03.13 23:22 
в ответ Murr 24.03.13 22:32
Есть проблемы:
вр-первых в Солюшине (вернее в каждом проэкте) указаны пути куда бросать объектники, поэтому если менять то поменяется у всех коллег - не заставлять же всех коллег витруальный диск делать...
во-вторых, если объектники будут виртуальны, то надо еще придумать выгрузку их на нормальный диск перед выключением Винды, и загрузку по включению. Иначе придётся делать полный билд солюшена. (хотя если оно будет считай мгновенно, то можно и полный).
в-третьих, надо слишком много памяти. Надо будет глянуть поточнее, но думаю что объектники более 1 гига займут на солюшен. А у нас их много (разные версии). Зачастую когда делаю коммит, хоть дэвелопил/дэбагил в одном солюшене, но мерджу и коммитю в нескольких солюшенах сразу(обычно в 6, бывает больше, бывает в 2 реже), ну и скомпилить хотя бы тоже весьма желательно(и обычно делаю) перед коммитом (еще лучше было бы протестировать, чего обычно не делаю).
Хотя надо будет подумать как это организовать...
Проклят нарушающий межи ближнего своего (Втор.27:17)
#43 
anly коренной житель24.03.13 23:45
anly
NEW 24.03.13 23:45 
в ответ Murr 24.03.13 22:32
Кстати, если сделать виртуальный диск, то соображает ли Винда, что это именно виртуальный диск, а значит нет необходимости кэшировать файлы в памяти?
На работе у меня Вин7. Она вроде сама может делать виртуальные диски (не надо сторонних утелит), значит - должна соображать, но мало ли...
Проклят нарушающий межи ближнего своего (Втор.27:17)
#44 
Murr патриот25.03.13 00:03
Murr
NEW 25.03.13 00:03 
в ответ anly 24.03.13 23:22
не заставлять же всех коллег
------
Конечно нет - для этого есть переменные среды... и BAT/CMD который их установит...
выгрузку их на нормальный диск перед выключением Винды
------
Зачем?
надо слишком много памяти.
------
Они тебе нафиг не нужы после линковки Ехе и/или Длл...
#45 
Murr патриот25.03.13 00:05
Murr
NEW 25.03.13 00:05 
в ответ anly 24.03.13 23:45
соображает ли Винда, что это именно виртуальный диск
------
Нет конечно... Это же Винда... для домохозяек...
#46 
anly коренной житель25.03.13 00:06
anly
NEW 25.03.13 00:06 
в ответ Murr 25.03.13 00:03, Последний раз изменено 25.03.13 00:07 (anly)
В ответ на:
Они тебе нафиг не нужы после линковки Ехе и/или Длл...
мне то не нужны, а вот ВисуалСтудии нужны. Без них она будет билдить весь солюшин, даже если были изменения только в одном цпп, и надо только один файл скомпилить и одну длл слинковать.
Проклят нарушающий межи ближнего своего (Втор.27:17)
#47 
Murr патриот25.03.13 00:17
Murr
NEW 25.03.13 00:17 
в ответ anly 25.03.13 00:06
не пользовался, но знаю, что Маке может обойтись без компиляции всего солюшена - перестроит только нужный проект, используя компилятор и линкер от ВС... как будет по времени - не знаю.
Но это в любом случае самый дешевый вариант увеличения производительности... вторую существенную прибавку можно выжать загрузив на виртуальный диск стандартные хеадеры...
Сколько и чего надо - смотри сам - твои обьемы мне не известны...
#48 
anly коренной житель25.03.13 11:24
anly
NEW 25.03.13 11:24 
в ответ megabyte 22.03.13 09:35
Intel
Проклят нарушающий межи ближнего своего (Втор.27:17)
#49 
megabyte знакомое лицо25.03.13 11:57
megabyte
NEW 25.03.13 11:57 
в ответ anly 25.03.13 11:24
У этого процессора 4 физических ядра + Hyperthreading (т.е. виртуальных 8)... В общем случае прирост производительности компиляции, при включенной ф-ции, должен быть (пруф), но в твоем случае (4ГБ ОЗУ) думаю эффект обратный. Попробуй установить кол-во процессоров для компиляции в 4.
#50 
  Posmotrim постоялец25.03.13 13:12
Posmotrim
NEW 25.03.13 13:12 
в ответ anly 21.03.13 20:13, Последний раз изменено 25.03.13 13:18 (Posmotrim)
Ты уверен, что хочешь ускорить работу именно компилятора, а не всего процесса сборки? Сколько раз в день делаешь full rebuld? Я делаю максимум раз в месяц и то при выходе новой версии. А так мне хватает обычный build. Ну сделал я за день изменения в 10 файлах, которые разбросаны по разным проектам, так при компиляции будут только они и компилироваться + связи. Тратятся секунды. Естественно везде precompiled headers. Буст тоже везде. Возможно тебе стоит проверить зависимости проектов и включаемых файлов?
ЗЫ сделай простой пример: внеси изменения в один cpp и сделай build для солюшена. Открой output window и смотри что происходит. В идеале произойдёт компиляция одного cpp + линковка проекта. ЧТо происходит у тебя?
Добавил: в текущем проекте у меня 2 гб объектников генерируется. Не знаю много это или нет, привык на это не обращать внимание.
#51 
anly коренной житель25.03.13 21:00
anly
NEW 25.03.13 21:00 
в ответ megabyte 25.03.13 11:57
как только я получил комп, я замерил время билда с разным количестовом паралельных билдов в ВисуалСтудии:
1 build 12:13
2 build 7:20
3 build 6:43
4 build 6:08
8 build 6:00
Сейчас время раза в два дольше.
Но это, по моему мнению, потому что диск торохтит. Как только вижу что в output window медленновато обновляется инфа о скомпиленных файлах - гляну на диск - точно торохтит, светится не моргая. При этом загруженность процессора в ТаскМэнеджере почти никакая - 5-10 процентов. А памяти (если одна ВисуалСтудия работает) еще свободно от пол-гига до одного гигобайта.
Проклят нарушающий межи ближнего своего (Втор.27:17)
#52 
anly коренной житель25.03.13 21:14
anly
NEW 25.03.13 21:14 
в ответ Posmotrim 25.03.13 13:12
Я тоже не часто специально запускаю полный билд солюшена. Однако предпочитаю каждый день брать последнюю версию, и не редко коллеги чего поменяют, что билдится более обычного.
Проэкт у нас уже 20 лет пишется и бардак там необыкновенный. Ну т.е. много надо времени потратить чтобы в инклудах порядки навести. Я переодически навожу, если есть вдохновение, в тех файлах которые пришлось затронуть когда какую багу исправлю. Бывает почти все инклуды удалю, т.к. они просто там не нужны, а кто-то в прошлом долго не думая путём копу-пастэ их туда вставил.
Даже если только один cpp подправил, то линковать ВисуалСтудия будет не только текущий проэкт, но и все зависящие. Ну а линковка нагружает диск, а с диском у меня проблема...
Проклят нарушающий межи ближнего своего (Втор.27:17)
#53 
Wanderer_ прохожий25.03.13 22:53
NEW 25.03.13 22:53 
в ответ megabyte 25.03.13 11:57
В ответ на:
У этого процессора 4 физических ядра + Hyperthreading (т.е. виртуальных 8)... В общем случае прирост производительности компиляции, при включенной ф-ции, должен быть (пруф), но в твоем случае (4ГБ ОЗУ) думаю эффект обратный. Попробуй установить кол-во процессоров для компиляции в 4.

Может даже и помочь, хотя не отвечает на вопрос, почему время компиляции в два раза увеличилась. Вот здесь рассписано как можно это сделать:
blogs.msdn.com/b/visualstudio/archive/2010/03/08/tuning-c-build-paralleli...
#54 
Wanderer_ прохожий25.03.13 23:25
NEW 25.03.13 23:25 
в ответ Murr 24.03.13 21:56
В ответ на:
Да, читаем ЕЩЕ раз... и может ЕЩЕ... до понимания того что написано.

Вот с этим я полностью согласен.
Я приведу здесь пару строк из текста. Несоответствия выделены жирным шрифтом и подчёркнуты
В ответ на:
Винда сама решает когда и что ей выгружать на диск... в обьеме доступного свопа.
Т.е. этот процесс юсером никак не контролируется. Увеличение обьема памяти проблему не решает - см. выше.

А теперь выдержка из текста:
If you really want to speed up your PC, your best options are these:
- Upgrade your RAM.
-Clean off the crapware—the biggest cause of system slowdown.
-Switch to Microsoft Security Essentials and stop paying for bloated Windows security packages.
-Windows 7 handles multi-tasking much better than Windows XP did.
В ответ на:
Так что - исключаем своп как таковой и радуемся увеличению производительности... пока не упадет..

выдержка из текста:
The problem with this logic is that it only really affects a single scenario: switching to an open application that you haven't used in a while won't ever grind the hard drive when the pagefile is disabled. It's not going to actually make your PC faster, since Windows will never page the application you are currently working with anyway.
#55 
megabyte знакомое лицо26.03.13 09:04
megabyte
NEW 26.03.13 09:04 
в ответ anly 25.03.13 21:00
В ответ на:
4 build 6:08
8 build 6:00
Сейчас время раза в два дольше.
Но это, по моему мнению, потому что диск торохтит.

На скольких процессорах время компиляции в два раза больше? на 8? на 4? на всех? если только на 8, то как долго комилиться на 4 ЦПУ сейчас?
#56 
Murr патриот26.03.13 10:25
Murr
NEW 26.03.13 10:25 
в ответ Wanderer_ 25.03.13 23:25
выдержка из текста:
------
Читаем выдержку после запятой, затем снова читаем первую строку.
Если не понятно - Винда "не будет выгружать" активно работающую задачу.
Но она будет выгружать задачи, которые она считает не активными (10-15 мс "бездействия", +/-). И именно во время работы активной, требующей ресурсов, задачи.
Повлиять на это юзер не может, но может исключить данную операцию.
#57 
Wanderer_ прохожий29.03.13 11:54
NEW 29.03.13 11:54 
в ответ Murr 26.03.13 10:25
В ответ на:
Если не понятно - Винда "не будет выгружать" активно работающую задачу.
Но она будет выгружать задачи, которые она считает не активными (10-15 мс "бездействия", +/-). И именно во время работы активной, требующей ресурсов, задачи.
Повлиять на это юзер не может, но может исключить данную операцию.

Так и я про тоже самое. Имеем два случая:
1) Для процесса имется достаточно оперативной памяти. ОС выделяет память и при этом не происходить никакой выгрузки страниц памяти. Выполнения процесса происходит одиноково как с включенным свопингом так и с отключенным.
2) Загружается-выполняется процесс для которого недостаточно свободной оперативной памяти. При вкюченном свопинге происходит выгрузка страниц памяти неактивных процессов. При выключенном свопинге система просто падает.
Где нам радоваться увеличению производительности???
В ответ на:
Да, читаем ЕЩЕ раз... и может ЕЩЕ... до понимания того что написано.

И какой можно сделать вывод после прочтения?
Отключение свопинга не рекомендуется.
#58 
Wanderer_ прохожий29.03.13 11:58
NEW 29.03.13 11:58 
в ответ anly 21.03.13 20:13
Интересно, у Анатолия(anly) что- нибудь получилось или нет. Ждём отчёта.
Успехов.

#59 
Murr патриот29.03.13 12:30
Murr
NEW 29.03.13 12:30 
в ответ Wanderer_ 29.03.13 11:54
Где нам радоваться увеличению производительности???
-----
Там, где кончается понимание.
...при этом не происходить никакой выгрузки страниц памяти.
-----
Именно здесь ты не понимаешь. Винда БУДЕТ выгружать в своп даже при наличии достаточного количества свободной памяти.
Отключение свопинга не рекомендуется.
-----
Да. Именно - не рекомендуется. Т.е. за исключением случаев, когда понимаешь что именно делаешь...
#60 
1 2 3 4 все