分享
 
 
 

给Delphi/C++Builder程序员:编写高质量代码的一个小窍门

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

今天分析了一个C++Bulider (Delphi)程序的汇编代码,发现了提高代码效率的一个小窍门,希望能给C++Builder和Delphi程序员做代码优化的时候提供一点参考。

汇编代码是这样的:

一开始判断一个文本框的输入字符是否为空,汇编代码里面有:

00456DAB |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]

00456DAE |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00456DB1 |. 8B80 CC020000 MOV EAX,DWORD PTR DS:[EAX+2CC]

00456DB7 |. E8 90CAFCFF CALL Crackme1.0042384C //调用GetDlgItemText

00456DBC |. 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]

00456DBF |. E8 08CDFAFF CALL Crackme1.00403ACC //调用strlen函数

00456DC4 |. 85C0 TEST EAX,EAX

00456DC6 |. 0F8E F7010000 JLE Crackme1.00456FC3

接下来,将它与另外一个字符串相连

00456DCF |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00456DD2 |. 8B80 CC020000 MOV EAX,DWORD PTR DS:[EAX+2CC]

00456DD8 |. E8 6FCAFCFF CALL Crackme1.0042384C

~~~~~//这里,我们发现又调用了一次GetDlgItemText

00456DDD |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]

00456DE0 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]

00456DE3 |. B9 68704500 MOV ECX,Crackme1.00457068

00456DE8 |. E8 2BCDFAFF CALL Crackme1.00403B18 //调用strcat函数

翻译成C++Builder代码(Delphi)应该是:

if(strlen(Edit1->Text) > 0 )

{

strText = Edit1->Text + "ABCDEF" ;

}

如此分析,那么我们每次用到Edit1->Text都要调用一次GetDlgItemText,

这样就影响了效率了。

重写这段代码我们可以写成:

str1 = Edit1-Text;

if(strlen(str1)> 0 )

{

str1 = str1 + "ABCDEF"

}

这样就少了一次GetDlgItemText,的调用,我们知道,每次多CALL一个函数,就要消耗很大开销,比如现场保存,堆栈操作,以及函数内部的代码开销。

相信在Delphi(C++Builder)代码中,存在大量类似的Edit1->Text操作,这些多余开销累积起来就相当可观了,所以我们在编码过程中稍微改变一下风格,就可以大大提高效率,何乐而不为呢~~ ^_^

Good Luck!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有