+ -
当前位置:首页 → 问答吧 → 晕,delphi的运算速度比C慢了几十倍?

晕,delphi的运算速度比C慢了几十倍?

时间:2011-08-24

来源:互联网

我记得以前都说delphi的运算速度比c快啊,怎么最近一试才发现,慢了几十倍。一段代码用于数据解码,循环了1.2亿次,生成一个20多M的文件,用c代码运算时间在0.9秒左右,翻译成delphi后,生成同样文件运算速度在50秒左右,差距很大啊......

作者: zhongguofr   发布时间: 2011-08-24

运算慢是Lz代码的问题吧

作者: funxu   发布时间: 2011-08-24

相差悬殊,肯定是Delphi版本的写法有问题。如果照你这么说,Delphi早就被人丢到废纸堆了

作者: rainychan2009   发布时间: 2011-08-24

代码呢?

作者: DelphiGuy   发布时间: 2011-08-24

别的不说了,举个例子如果C++里的字符串用char指针,而delphi里面用
string str;
str:=str+str;
这样的代码,速度当然没法比了
还有 循环了1.2亿次
具体内容是什么呢?
如果涉及到了数字运算,加减乘除和直接用汇编的效率也没法比吧;

作者: funxu   发布时间: 2011-08-24

还有频繁的申请释放内存等等等等

作者: funxu   发布时间: 2011-08-24

引用 4 楼 funxu 的回复:

别的不说了,举个例子如果C++里的字符串用char指针,而delphi里面用
string str;
str:=str+str;
这样的代码,速度当然没法比了
还有 循环了1.2亿次
具体内容是什么呢?
如果涉及到了数字运算,加减乘除和直接用汇编的效率也没法比吧;

这个是动态分配内存的,当然会影响效率,这个也是D独有的。当然Delphi也可以使用指针来做啊

作者: rainychan2009   发布时间: 2011-08-24

嗯,我只是给LZ举例,正因为delphi独有的这个特性被很多人忽略了,所以满大街都是str:=str+str之类的代码,虽然简单,但是非常浪费啊

作者: funxu   发布时间: 2011-08-24

只能说,你翻译的代码不是高效的

作者: aqtata   发布时间: 2011-08-24

LZ本身的问题,
string str;
str:=str+str;

自有它本身的实用性,指针也有它的用处。您要追求速度,那就要用速度的方式。

作者: babydog01   发布时间: 2011-08-24

热门下载

更多