pas调用dll里的函数比调用该pas里面的函数时间长吗? 比如一函数max(),写在一test.dll中,main.pas调用该函数。或者max()函数写在main.pas文件里,main.pas中调用该函数。以上两种情况,那种调用花费的时间长? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是动态的调用DLL中的函数的话,要慢一点 一样的,如果你用动态载入DLL的话,要慢点。 这两天csdn有点怪,很多刚发的新贴子看不到,最新回复的日期更新缓慢,结过的贴子要过好久才能打上勾。不知道大家觉不觉得? 你可以反编译代码看看,静态连接时你调用某个函数,实际上时调用的重定向表中的某个地方,那里在JMP过去,实际上不过多了5个字节,效率可以忽略不计动态调用则应该是直接CALL到实际的函数地址, 动态调用是间接寻址静态调用是直接寻址+JMP重定向,你可以参考有关资料来查查哪个方法的时钟总周期大一些不过这样就有点无聊了 如果是动态的调用DLL中的函数的话,要慢一点(但可忽略不计)好处封装到DLL可重复调用(有所得必有所失) 时间损失期望∆E=(32位NEAR CALL间接寻址时钟周期数+32位位NEAR CALL直接寻址+32位JMP直接跳转)×0.5/CPU频率 (应该这么计算)看看吧,很小的时间损失 不用担心,因为你的程序和你所用到的dll都是加载到同一个进程空间里的,没有区别! 如果for循环10000次,这个差别应该很大吧?十几分钟应该有的吧?调用的时候才load这个dll这本身就需要很长时间呀。循环10000次load一万次,这很可怕。 如果是VB,那么差别的确很大,如果是Delphi,估计你循环1万次的时间差连1秒都没有 个人认为一样的都是同一个空间上的如果是动态Load的,只是Load的时间而已,调用上没区别 就按大家说的办,没有区别。使用dll。 应各位同仁盛情邀请,开始放分 有关程序延时的问题~ 关于从EXCEL 导入到SQLSERVER 的问题。 ADOConnection使用? ini文件中内容的换行 Sql7.0问题100分 存储过程 如何往文件写入动态的数据(使用tfileStream对象的write用法) 超新手的问题,谁先进来谁拿分 最后的64分一个简单的问题 KeyDown事件 怎样才能知道有几个窗口已打开了?
静态调用是直接寻址+JMP重定向,你可以参考有关资料来查查哪个方法的时钟总周期大一些不过这样就有点无聊了
(有所得必有所失)
都是同一个空间上的如果是动态Load的,只是Load的时间而已,调用上没区别