哪一种ARM9的编译器最强?

BadEnglish 2006-01-07 02:55:32
涉及图象处理,要求代码速度最快,
可能还涉及OS吧,我稍后了解一下在要用在什么系统下。
...全文
1010 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
BadEnglish 2006-01-27
  • 打赏
  • 举报
回复
暂时先结了吧,以后再重新开个贴,讨论ARM的运行效率问题.
BadEnglish 2006-01-16
  • 打赏
  • 举报
回复
我知道速度可以查到,手边没手册,谁现在知道就告诉我个大概,我好对它性能有个估计。
载舟之水 2006-01-16
  • 打赏
  • 举报
回复
那你说的速度应该可以查阅厂商的文档可以找到,每家公司的CPU不一样。
BadEnglish 2006-01-16
  • 打赏
  • 举报
回复
ARM9没有整数除法指令吗?
我说的时钟也就是指令相对速度,比如说.13工艺版奔4上,加法需要0.5CPU时钟周期,乘法大概18个,除法40以上。
载舟之水 2006-01-16
  • 打赏
  • 举报
回复
RAM可能是16位的,这才是关键。
BadEnglish 2006-01-16
  • 打赏
  • 举报
回复
ARM9没有整数除法吗?
我说的时钟也就是指令相对速度,比如说.13工艺版奔4上,加法0.5需要时钟周期,乘法大概18个,除法40以上。
goodluckyxl 2006-01-16
  • 打赏
  • 举报
回复
除法 的软件实现指令需要500条左右大概
arm体系下总线宽度32位 所以数据访问对齐等一些优化可以照抄
arm官方要支持realview 我们也准备购买了 唉
作为追求效率底层的封装编译器实现只是一部分
用户代码才是性能提高的主要突破点
至少我做了几年上层底层的观点
载舟之水 2006-01-16
  • 打赏
  • 举报
回复
不清楚你说的时钟速度指的是什么?ARM的CPU有些设计为频率是可变的,比如会从100MHZ自动提速到500MHZ,这是由厂商电源管理驱动来控制的,而且你要注意你的总线宽度,x86基本上是32位,而嵌入式系统可能是16位的,算法会有变化。
载舟之水 2006-01-15
  • 打赏
  • 举报
回复
既然你不打算用特有的指令集,那你没有选择编译器的自由了,你系统支持什么编译器就用什么。
BadEnglish 2006-01-15
  • 打赏
  • 举报
回复
楼上的说得够详细了,谢谢!可惜的是根据这些资料我只能根据系统定速度,而不是根据速度选系统。
我知道ARM9没浮点,有没有人能顺便告诉我它的整数除法,乘法,加法,条件和非条件转跳的时钟速度?


BadEnglish 2006-01-15
  • 打赏
  • 举报
回复
光听厂家吹是没用的,需要自己去试!如果你测试过可以告诉我结果。
每次他们推出新东西都会标榜一些新技术,作用多大就不一定了。
和优化有关的选项我早就试验过了,VC.NET如果使用奔腾4优化,才能达到VC6的速度,否则还稍慢一些。
我经常用反汇编看编译过的代码,VC6在寄存器的使用已经发挥到接近极至了,至于inline函数的处理不算什么技术,不值一提。
或许VC.NET在C++编译方面会先进些,但我没测试过不敢说,因为考虑到速度和可移植性的问题,我的算法核心都是用C写的,即使用C++也尽量用高效率的C风格。
普通的MFC程序我从来不测试编译代码的速度,里面大量的API调用,不能反映编译代码速度。
载舟之水 2006-01-15
  • 打赏
  • 举报
回复
是这样的,嵌入式开发中不会像PC那样,有多家软件公司为x86架构开发编程工具或编译器,而是CPU厂商自己开发针对自己的编译器或是操作系统厂商为自己开发一种编译器,基本上没有选择的余地。我上面说Intel的 Xscale已经算是特例了,有Intel自己专门做的编译器和操作系统厂商做的编译器,有两个选择,但是其他公司比如NeoMagic的 ARM9 CPU,是没有这么多选择的。

其实我忘了提醒你一下,你在x86上做的算法优化在ARM上是要重新做优化的,不能认为你在x86上最快的算法就在ARM上最快,因为我前面提到了,绝大多数ARM CPU的浮点运算是没有或是很差的(即使Intel的CPU也一样),基本上靠操作系统软件模拟,所以你的C算法一定要保证是整数运算才是优化的第一步,例如著名的mp3解码算法mad,就是典型的整数算法。还有其他和PC不同的地方,我想你做过优化,应该想得到,比如流水线和总线宽度等问题。

所以我能告诉你的最终答案也就是这样,你首先确认你用哪家公司的CPU,然后你看看这家公司做了几个编译器,然后这几个或1个编译器能不能用在你需要的操作系统上,或是先确定操作系统。
BadEnglish 2006-01-15
  • 打赏
  • 举报
回复
楼上的,你的意思是说一个系统只支持一种标准AMR9代码编译器?
那么是不是如果我打算用特有的指令集,就有一种以上的选择?
我越听越糊涂啊
singlerace 2006-01-15
  • 打赏
  • 举报
回复
你说vc.net和vc6相比速度没什么进步,我怀疑你根本没有打开vc.net的全局优化开关。如果研究他们编译出来的汇编代码的话,你会发现vc.net比vc6 aggressive的多,特别是在对寄存器的使用和inline函数的处理上。就凭这两点,我相信vc.net应该明显比vc6优化效果要好一些。
singlerace 2006-01-15
  • 打赏
  • 举报
回复
我想你的目标是让你的图像处理应用跑的最快,而不是哪个编译器优化效果最好。这个问题不是在PC上,有一个标准的参考平台,选个最快的编译器就行了那么简单。在嵌入式系统上,就目前阶段而言,基本上选定了OS,编译器也就定了(我还没听过Windows CE上用gcc或者embbeded linux上用eVC的)。OS的选择其实对你的算法运行有很大的影响,比如同一个子例程,在一个OS上可在一个时间片内完成,在另外一个OS上可能得跨一个时间片;又比如运行算法的线程可能别的高级别线程或中断强掉,而线程切换的开销和中断响应速度在不同的OS上差别是很大的。其次,编译器的优化结果跟具体的算法实现也有一定关系,比如产生的临时对象,fastcall还是stdcall,inline函数的处理,虚拟函数或者模板的使用,等等,不同编译器的擅长点是不同的,你的实现正好用某个编译器优化的结果比较好也是可能的。再次,别的不说,即时是同样的硬件平台,MMU的因素其实远比好的编译器重要的多:不用MMU的OS在代码运行和中断响应速度上都会大大提升,但是不用MMU对你的OS选择,算法实现,应用构建等很多方面会有很大影响。总之,这个问题应该综合考虑,不是选个好的编译器那么简单,更不应该先选编译器再选OS。
BadEnglish 2006-01-14
  • 打赏
  • 举报
回复
楼上的,我的问题非常清楚:谁编译的结果快。我也说和OS有关了。
我暂时不打算用特殊指令集,就用标准AMR9指令,我承认我对ARM不了解,但我说说我对PC上的了解。
在WINDOWS上,不考虑SIMD指令(虽然我会用,但我直接用汇编)的支持,最快的并非INTEL,虽然INTEL吹得天花乱坠,其实虽然用完全同样的指令集,它比MS VC慢10%左右,代码大30%,其它编译器比如BORLAND,比MS和INTEL就不是一个档次了。MS VC6和VC4也是用完全同样的指令集,但是VC6快一倍多,VC.NET的几个版本速度上比VC6没什么进步。
在LINUX上,INTEL明显比GCC快。
如果谁对ARM上的编译器有类似的了解,清赐教!
载舟之水 2006-01-14
  • 打赏
  • 举报
回复
没有人气你,是你根本没说清楚,或者你是觉得大家根本帮不了你,随便问问而已。ARM是一种很简单的结构,以成本低,速度低著称,大部分连浮点都没有,而且不同公司的CPU,有的有他们特有的指令集,比如 Intel有for Mobile 的 MMX,但MiMagic好象是通用的指令集。因为对于追求高效率的程序来说,你当然是希望利用他们特有的指令集来加速,所以连编译器都没有选择。
很明显,用Intel 的 CPU只能用intel的编译器最快,其他公司的都只能用自己的编译器最快,如果是通用的,编译器就根据操作系统来选,比如ADS是编译器,但是编译出来的bin文件却不能执行在WINCE的系统上,那还是不是没用。至少你要说清楚用什么公司的CPU,什么结构,什么操作系统,有人有这方面经验自然会告诉你。
BadEnglish 2006-01-14
  • 打赏
  • 举报
回复
我晕啊,我要问是那个编译器器的编译代码更快,这在PC上好坏可以差几倍。
至于算法优化我已经做了几年了,油水接近轧干了,硬件加速是要钱的!
我假设两种编译器水平接近,代码速度仅仅相差10%,如果我把CPU主频提高10%要多少钱啊,更不用说DPS了,到万套硬件这个数量级硬件是很要命了。
大家如果不能帮我,别气我好不好,呵呵,当然你看见过速度的专业评测,或者自己做过高负荷比较的另当别论。
fiel 2006-01-10
  • 打赏
  • 举报
回复
呵呵,编译器最好的确实说不出来。

但我见到的为了加快图像处理的都是在算法和代码细节上下功夫,另外呢,硬件是最终采用了DSP+FPGA,ms级处理要求,算是够快的应用吧。
singlerace 2006-01-10
  • 打赏
  • 举报
回复
没听说哪个编译器性能优化特别突出的。对于图像处理的性能来说,关键还是算法、实现和硬件加速。靠编译器提高性能是不现实的。
加载更多回复(12)

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧