ADS 1.2 에서 컴파일시 너무 많이 걸리는 시간....

dropbh의 이미지

안녕하세요

현재 ADS 1.2 + cygwin 환경에서 컴파일을 시도 하고 있습니다.

헌데 include관계가 복잡하게 얽혀있는 .CPP 파일을 컴파일시 무지 막지한 시간이 걸립니다...

일든 그러한 CPP 파일들은 include하는 헤더 파일들의 양이 많고 또 그렇게 include된 헤더도 자체적으로 많은 헤더들을 include하고....

아마 중복된 헤더 파일들도 많을 겁니다.

정리를 해야 한다는 것은 알고 있는데 한두가지가 아니라 시간관계상 엄두가 안나는 상황입니다.

혹시 특별한 방법이 있을까요? 컴파일 옵션을 바꾼 다던지.....

질문이 약간 두리뭉실 하지만 단서라도 알려주시면 감사하겠습니다.

kkiruru의 이미지

CPU가 멀티코어면 make -j 옵션을 써 보세요.

kkiruru의 이미지

..; 그래도 분산컴파일러가 제일 빠르더군요..

skysign의 이미지

예전에 휴대폰쪽 일할 때, NTFS 보다는 FAT32 가 컴파일 하는대 걸린는 시간이 적었었어요.

오호라의 이미지

좋은 하드웨어를 이용한 겁니다.

Visual Studio 라면 Increbuild 를 쓰면 되고, GCC 라면 Distgcc 또는 ccache 를 쓰시라고 하고 싶습니다.

HDD : SAS RAID 0
CPU : Xeon 3.xGHz
OS : XP 64bit or Vista
RAM : 8G ~ 16G ( RAMDISK 4G )

linux 같은 경우는 RAID, FS 등으로 잘 설정해보면 뚜렷한 성능차이가 나지만 원도우에는 그닥 뚜렷하게 차이가 안보이더군요. RAMDISK 까지는 저도 필요없어서 안쓰고 있지만 위의 방법을 잘 활용하시면 시간을 수배에서 수십배로 사이로 시간을 줄일수 있을겁니다.

그리고, 물어보신 내용을 보면 환경설정 및 패스에 관련된 것같은데 그런건 본인께서 본인환경을 잘 파악해서 해야지 별다른 뽀족한 방법이 없을 것같습니다.

Hello World.

draca의 이미지

정확한 명칭은 모르겠으나,
저는 Header merge 라고 부르는 방법도 있습니다.
원리는 compile path 에 header_dir 과 같은 임의의 폴더를 만들고,
전체 소스폴더의 .h 파일을 이곳에 복사해줍니다.
그리고 include path 의 처음에 이 폴더를 잡아주면 됩니다.
그러면 전체적으로 include file search 하는 시간이 줄게 되어,
약 30000만 여개의 소스로 구성된 프로젝트에 적용 시 30% 정도까지 빌드 속도가 개선되기도 하더군요.

고려하실 부분은,
1) makefile 에서 빌드시마다 갱신된 header 파일만 다시 복사하도록,
2) 이때 동일한 이름의 header 파일은 복사하지 않도록 해줘야 엉뚱한 header 가 include 되는 문제를 막을 수 있구요.

* 물론 제일 좋은 방법은 include path 가 난잡해지지 않도록 하는 방법입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.