阅读:1068回复:2
18分 help me !!!!如何加快IO的速度???急急。。。
在WIN2000、XP下我要对某个端口要进行频繁的进行IO操作。例如以下在WIN98程序中的操作一样;
void Do(double &a,double &b); //要进行复杂的浮点数运算; void Run() //运行的主函数; { for(int i=0;i<10000;i++) { Do(a,b); _outb(0x300,a); _outb(0x301,b); } } 我要将这代码移到WIN2000、XP下运行时,就势必要用WDM中的端口 输出函数,从而转到如下方式。 应用程序----->动态库(调用DeviceIoControl来实现与驱动程序的 对话)----->驱动程序进行IO操作(用的是直接对端口的而不是用的 对寄存器的操作)。WRITE_PORT_UCHAR 我进行实验得到如下结果。 即在WIN98下运行的代码只用0.11秒而在WIN2000、XP下用驱动程序 的代码花了3秒才能完成,这个问题如何解决请高手指点一二。 多谢 我的Email:xiao_cao@msn.com cao-feng-@163.com :mad: |
|
沙发#
发布于:2002-07-24 13:54
浮点运算很复杂吗?能不能就在驱动中完成?或者10000个计算完成后将数据依次放到缓冲区中,然后让驱动将缓冲区中的数据逐个输出?
[编辑 - 7/24/02 by gung] |
|
板凳#
发布于:2002-07-24 15:01
其实将浮点数运算加入其中这种方式我试过,但由于运算相当复杂
还一定要用到SIN,COS,等函数。而你所说的第二种方式(用缓冲 区的方式)也是我正在偿试的一种方式。 不过还是THANK YOU!!! |
|