vmware-archive / quickstep

Quickstep Project
Apache License 2.0
27 stars 13 forks source link

Reduced the Total CI time by Running the Most Time-consuming Build first. #162

Closed zuyu closed 8 years ago

zuyu commented 8 years ago

Since the most time-consuming build is on the critical path of the total CI time, the earlier the build finishes, the shorter the total time.

Total elapsed time after reordering is 1 hr 17 min using the default 5 parallel jobs. On the other hand, a typical total CI time is between 1 hr 30 min and 1 hr 50 min, depending on the concurrent build loads.

Compiler Env Time
gcc BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 1 hr 17 min
gcc BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 54 min 39 sec
gcc BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=none 19 min 7 sec
gcc BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=none 22 min 35 sec
clang BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 36 min 40 sec
clang BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 36 min 37 sec
clang BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=none 17 min 2 sec
clang BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=none 15 min 28 sec

The next step is, to optimize the build time for the most time-consuming job.

hakanmemisoglu commented 8 years ago

@zuyu It makes sense. Especially if this is single build in the queue, total time will be less than one and half hour.

zuyu commented 8 years ago

@hakanmemisoglu FYI, even with concurrent builds for different PRs, the total time 1 hr 7 min 24 sec is still better than ever.

Compiler Env Time
gcc BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 1 hr 3 min 55 sec
gcc BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 56 min 25 sec
gcc BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=none 19 min 48 sec
gcc BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=none 15 min 46 sec
clang BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 35 min 14 sec
clang BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions 32 min 9 sec
clang BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=none 16 min 7 sec
clang BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=none 13 min 13 sec
pateljm commented 8 years ago

Nice! LTGM. Merging.