This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

how to speed up compile process?

we have a pretty huge C166-application with approimately 600 source files. The generated code takes about 500kB.

If I just compile one file within uVision2 it takes up to 70 seconds for compilation and linking.

Does anybody know a possibility to speed up this process significantly?

Thank you
...Leo

Parents
  • I am not familiar with the C166 products, but it seems that your speed problem is as much related to linking as it is to compilation.

    Linkers spend most of their time resolving externals. Generally, the time taken to link goes up with the square of the number of externals to be resoloved.

    To speed up linking, you should take steps to reduce the number of externals that the linker needs to handle at any one time.

    Use locals where possible and group functions that share common data into the same modules so that the data do not have to be resolved externally.

    Some linkers are able to do partical or incremental links. This allows the developer to group sub-sets of closely coupled modules together and link them into partially linked object modules. The partially linked modules are then linked together. This requires several invokations of the linker, but the square law means that the process is quicker overall.

    If most of your modules change infrequently, consider building a library. Carefully constructed libraries can be linked in quickly because they present relatively few unresolved externals.

Reply
  • I am not familiar with the C166 products, but it seems that your speed problem is as much related to linking as it is to compilation.

    Linkers spend most of their time resolving externals. Generally, the time taken to link goes up with the square of the number of externals to be resoloved.

    To speed up linking, you should take steps to reduce the number of externals that the linker needs to handle at any one time.

    Use locals where possible and group functions that share common data into the same modules so that the data do not have to be resolved externally.

    Some linkers are able to do partical or incremental links. This allows the developer to group sub-sets of closely coupled modules together and link them into partially linked object modules. The partially linked modules are then linked together. This requires several invokations of the linker, but the square law means that the process is quicker overall.

    If most of your modules change infrequently, consider building a library. Carefully constructed libraries can be linked in quickly because they present relatively few unresolved externals.

Children
No data