比如一函数max(),写在一test.dll中,main.pas调用该函数。
或者max()函数写在main.pas文件里,main.pas中调用该函数。
以上两种情况,那种调用花费的时间长?

解决方案 »

  1.   

    如果是动态的调用DLL中的函数的话,要慢一点
      

  2.   

    一样的,如果你用动态载入DLL的话,要慢点。
      

  3.   

    这两天csdn有点怪,很多刚发的新贴子看不到,最新回复的日期更新缓慢,结过的贴子要过好久才能打上勾。不知道大家觉不觉得?
      

  4.   

    你可以反编译代码看看,静态连接时你调用某个函数,实际上时调用的重定向表中的某个地方,那里在JMP过去,实际上不过多了5个字节,效率可以忽略不计动态调用则应该是直接CALL到实际的函数地址,
      

  5.   

    动态调用是间接寻址
    静态调用是直接寻址+JMP重定向,你可以参考有关资料来查查哪个方法的时钟总周期大一些不过这样就有点无聊了
      

  6.   

    如果是动态的调用DLL中的函数的话,要慢一点(但可忽略不计)好处封装到DLL可重复调用
    (有所得必有所失)
      

  7.   

    时间损失期望∆E=(32位NEAR CALL间接寻址时钟周期数+32位位NEAR CALL直接寻址+32位JMP直接跳转)×0.5/CPU频率   (应该这么计算)看看吧,很小的时间损失
      

  8.   

    不用担心,因为你的程序和你所用到的dll都是加载到同一个进程空间里的,没有区别!
      

  9.   

    如果for循环10000次,这个差别应该很大吧?十几分钟应该有的吧?调用的时候才load这个dll这本身就需要很长时间呀。循环10000次load一万次,这很可怕。
      

  10.   

    如果是VB,那么差别的确很大,如果是Delphi,估计你循环1万次的时间差连1秒都没有
      

  11.   

    个人认为一样的
    都是同一个空间上的如果是动态Load的,只是Load的时间而已,调用上没区别
      

  12.   

    就按大家说的办,没有区别。使用dll。