1、前言

使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择需要全部编译,那么这个时间就很长了。

网上也有一些帖子讲述了如何提高 Tasking 编译速度的方式,比如更改多线程编译的数目、更改编译等级和减少编译输出内容等来提高编译速度。

不过这些方式没有很明显的提升, Tasking 多线程编译选项基本是默认的,会根据电脑的配置自动选择最优的线程数目进行编译,而编译等级和编译输出内容(如map文件)算是治标不治本,因为调试开发阶段这些是不可或缺的,没有调试信息的情况下在仿真调试阶段异常属于闭眼走路。

下面会介绍几个方式来提高 Tasking 编译时的速度,也会介绍如何修改编译时的多线程数目。


2、提升编译速度方法

以下的测试结果所使用的电脑配置:Windows 10 + 英特尔 i7(8核) + 64G内存

在设置之前首先全部编译一遍代码,方便对比编译时长,此次编译所耗时长是 480826ms ≈ 8 分钟。

Time consumed: 480826 ms
**** End of build ****

2.1、编译时的线程数目

右击工程,选择 "Properties -> C/C++ Build -> Behavior",选择 "Use parallel jobs",为了明显比较,这里设置 16(默认8)

看一下编译时的CPU使用率,达到了 100%(因为还有其他软件在运行,所以 Tasking 占据了 80%)。

此次编译所耗时长是 489038ms ≈ 8 分钟,没有明显变化,建议采用默认的线程数目即可。

关于编译时的线程数目,不是越多越好:CPU密集型任务,并行执行的线程数应该尽量和CPU核心数保持一致,否则超过了CPU核心数,再提高线程数也不会提高处理速度,反而因为上下文切换带来的损耗降低处理速度。

Time consumed: 489038 ms
**** End of build ****

2.2、Makefile 的自动生成

Tasking 在编译时会为项目工程源码自动生成 Makefile 文件,可以查看工程目录下的 Debug 目录,里面基本都是各个源文件的 makefile 文件,都是在编译时自动生成的。每次编译(包含修改部分编译)都会重新生成一次,这里也需要占用一些编译的时间,那么这次测试取消编译时总是生成 Makefile 选项后能提高多少。

右击工程,选择 "Properties -> C/C++ Build -> Builder Settings",取消勾选 "Generate Makefiles automatically"(如果新增了文件,那么最好重新勾选上并生成,否则编译时新增的源码文件不会被编译)。

此时测试编译耗时为 489543ms ≈ 8 分钟,没有明显变化。

Time consumed: 489543 ms
**** End of build ****

2.3、内存参数配置

由于 Tasking 是基于 eclipse 集成开发环境平台扩展的 IDE,因此可以根据如何提高 eclipse 的编译速度的方式对 Tasking 进行同样的设置。

打开 Tasking 的安装路径,找到 eclipse.ini 文件,修改配置信息提高 Tasking 的编译速度,-Xms设置为 2048,-Xmx设置为4096。

-vmargs:说明后面是VM的参数
-Xms256m:虚拟机占用系统的最小内存
-Xmx1024m:虚拟机占用系统的最大内存
建议把这个稍微设大一点,不过要根据自己机器内存大小来设置(可能设置后出现打不开,那就尝试再小些)

-showsplash
com.tasking.ctc
--launcher.XXMaxPermSize
512m
-vmargs
-Dosgi.splashPath=platform:/base/plugins/com.tasking.ctc
-Declipse.product=com.tasking.ctc.ide
-Xms2048m
-Xmx4096m
-Xverify:none

此时测试编译耗时为 438945ms ≈ 7 分钟,有些许变化。

Time consumed: 438945 ms
**** End of build ****

2.4、静态库链接

从编译的记录看,iLLD 库源码编译的时长是占比最大的,而通常情况下除非库有问题或者需要性能优化,基本不会随意修改 iLLD 的源码内容,但是每次全部编译都会重新编译这一部分源码内容,因此,如果想提高编译速度的话,那么这一块就是就是重点需要解决的部分。

将 iLLD 编译成静态库,然后在编译时不再编译 iLLD 源码,通过静态链接的方式完成整个工程的编译。

1、首先右击工程中添加的 iLLD 目录,按下图选项不再编译 iLLD 源码。

2、将编译好的 iLLD 静态库放在 iLLD 目录下,新建一个 Lib 存放,此时可以看到 Src 是灰色的,代表不被编译。

3、右击工程,"Properties -> C/C++ Build -> Settings -> Tool Settings",按下图添加静态库,然后编译。

4、此时测试编译耗时为 235933ms ≈ 4 分钟,发生了明显的变化,编译时间缩短了一倍。

Time consumed: 235933 ms
**** End of build ****

3、总结

综上所述,四种方式中只有静态链接的方式会明显缩短编译时间外,其他几种方式均没有太明显的变化。

注:由于反复操作对比,即使没有按上述方式修改的情况下,每次编译时长都会比上次编译要久,所以上述除了静态链接的方式外,其他方式的测试编译时长仅供参考。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度相关推荐

  1. 英飞凌单片机TC264实战攻略

    简 介: 对于参加全国大学生智能车的队伍进行Infineon单片机技术的培训.本文给出了培训的相关细节. 关键词: 英飞凌,培训,智能车竞赛 §01 培训背景   全国大学生智能汽车竞赛是以智能汽车为 ...

  2. 5加载stm32 keil_快速入门STM32单片机-软件篇

    关于这个STM32的编程开发环境Keil,网上有太多相关的资源了,而且大都讲解的非常详细.所以本篇文章无意于深入细节,只会提供我学习时候的一些体会,帮助你更好的掌握相关知识. 1.标准外设库(Stan ...

  3. 如何快速的开发单片机

    作为一个单片机开发的老司机,在这里告诉大家如何快速的开发单片机,完成自己的项目. 一.整理需求,如果你们的产品经理已经整理出需求那就更好了.拿到需求后,如果有疑问请及时沟通.请不要有疑点,例如:完成项 ...

  4. 多实例gpu_MIG技术快速提高AI生产率

    多实例gpu_MIG技术快速提高AI生产率 Ride the Fast Lane to AI Productivity with Multi-Instance GPUs 一.平台介绍 NVIDIA安培 ...

  5. 快速提高你的UI设计水平的一些小技巧

    UI设计师这个岗位在最近几年的缺口是比较大的,很多企业都在招UI设计人员,想要学习UI设计或者提升UI设计技术的同学,可以看看小编分享的以下内容,善用这些UI设计小技巧,快速提高你的设计水平! 快速提 ...

  6. 如何快速提高网站流量

    现在很多人在走电子商务路线,而且也有越来越多的人在博客上发表自己的见解,当然我也是其中一个.天我就来对如何快速提高网站流量跟大伙做个交流. 1.网站优化法[Google]我认为这种方法是最有效的,而且 ...

  7. web开发快速提高工作效率的一些资源

    文:祈澈姑娘 前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来,后续持续跟新中...... ...

  8. 快速提高CSDN访问量 - 附脚本初代机

    快速提高CSDN访问量的方法 多写常用知识点的博客,想办法提高百度排名,注意标题不要写的太复杂 写国内比较新的技术,中短期奇效,效果很好 成系列的写技术文章,有利于增加评论,粉丝,中长期能够大幅度提高 ...

  9. 微博遭鹿晗恋情暴击瘫痪,如何快速提高系统性能?

    人生处处是惊喜.国庆假期最后一天,当红流量小生鹿晗于正午 12 点,在微博公布恋情. 微博一经发布后,瞬间刷爆朋友圈.各大网站头条,还导致了微博一时间瘫痪.微博客服也很无奈表示:具体怎么造成的,大家心 ...

最新文章

  1. 在阿里AI实验室做NLP高级算法工程师是一种什么样的体验?
  2. 一个简单的struts的例子
  3. [转]那些年我们一起清除过的浮动
  4. HTTP代理神器Fidder
  5. Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
  6. P1464 Function(递归式的记忆化搜索)
  7. zipaligin不是内部或外部命令,也不是可运行的程序
  8. 【Java例题】5.3 线性表的使用
  9. 【DP】和谐的奶牛(jzoj 1750)
  10. iOS12.3正式版发布 iOS13亮相进入倒计时
  11. 做生意失败是一种什么体验?创业中有哪些雷区需要注意?
  12. 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数
  13. micropython入门指南-电子工业出版社-网上书店
  14. Java 二分排序法
  15. Docker_制作docker镜像
  16. 远控免杀从入门到实践 (11) 终结篇
  17. Web前端开发技术 HTML、CSS、JavaScript pdf
  18. 数据字典的作用是什么,它有哪些条目?
  19. 千锋python培训机构可靠吗
  20. html 微信界面,微信界面.html

热门文章

  1. powerdesigner中name属性变为注释_se7en3_新浪博客
  2. JVM如何识别“到底谁才是垃圾“?
  3. 广州电子地图下载 来自谷歌电子地图库 地图展示15、17、19级
  4. C语言自己认为理解有难度的或者容易犯错的知识
  5. PMP报考一定要报培训班吗?
  6. 计算机毕业设计Java南京新东方学校家校通系统(源码+系统+mysql数据库+lw文档)
  7. 员工过失给企业造成损失,赔偿责任分析
  8. 妈蛋!! 居然是打广告的
  9. %llu 64位无符号%d、%u、%x/%X、%o%f、%e/%E或%g/%G
  10. linux fcitx改mac输入法,Linux安装fcitx输入法