关于CreateFile

crosoli 2010-11-18 02:19:59
DWORD a = GetTickCount();
CreateFile
readfile //读16K
closehandle
DWORD b = GetTickCount();

1,得到a b 是一样.CreateFile readfile 都不耗运行时间和系统资源吗?


2,在做文件传输的时候

我声请16K的内存缓冲区读取文件数据(CreateFile ReadFile closehandle),然后传输.传输完成得到回显后,进行下一次投递.
下一次投递我又(CreateFile readfile closehandle)一次,

这样有什么缺陷?


...全文
184 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chehw 2010-11-18
  • 打赏
  • 举报
回复
CreateFile 占系统资源;ReadFile涉及IO操作,比较耗时间。
crosoli 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chehw 的回复:]
1、GetTickCount的受限于system timer的精度(通常在10ms-16ms)。
2、“下一次投递我又(CreateFile readfile closehandle)一次”:
为什么又(CreateFile readfile closehandle)一次,文件内容有变化了吗?不能直接用缓冲区中的数据吗?
[/Quote]
1.原来这样.... 但是感觉createfile不占什么时间和资源, readfile 才占资源
2.CreateFile 要是不怎么占资源的话,我就每次打开, 要是站资源的话 我就CreateFile 一次.
chehw 2010-11-18
  • 打赏
  • 举报
回复
1、GetTickCount的受限于system timer的精度(通常在10ms-16ms)。
2、“下一次投递我又(CreateFile readfile closehandle)一次”:
为什么又(CreateFile readfile closehandle)一次,文件内容有变化了吗?不能直接用缓冲区中的数据吗?
crosoli 2010-11-18
  • 打赏
  • 举报
回复
要是耗的资源 远小于其他的代码耗的资源, 那就可以忽略掉..
zjfhgdx 2010-11-18
  • 打赏
  • 举报
回复
肯定要耗资源的,这个不用怀疑。。。多少的问题了
crosoli 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zjfhgdx 的回复:]
下一次投递我又(CreateFile readfile closehandle)一次
createfile一次就够了吧,不用每次都createfile。把文件句柄保存一下
[/Quote]

请看第一个问题疑惑...
zjfhgdx 2010-11-18
  • 打赏
  • 举报
回复
下一次投递我又(CreateFile readfile closehandle)一次
createfile一次就够了吧,不用每次都createfile。把文件句柄保存一下
crosoli 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zjfhgdx 的回复:]
引用 3 楼 crosoli 的回复:
1,都1M有的时候会13MS,基本上都是0MS,
2.是用的IOCP,


可这样传输速度不理想啊,

IOCP是效率最高的服务模型了。
可能你的代码上有点问题吧。
还有就是iocp在有大量请求的时候才能体现它的性能。

传输完成得到回显后,进行下一次投递.
这里影响速度了吧。
IOCP可以连续投递的
[/Quote]


ICOP的优点我知道啊.

传输完成回显,是把我缓冲区的数据传输完了再读取.
IOCP是连续投递的啊, 比如我声请32K的空间,但是每次投敌进去的只是8K
为了避免出错,才做的数据包回复.
zjfhgdx 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 crosoli 的回复:]
1,都1M有的时候会13MS,基本上都是0MS,
2.是用的IOCP,


可这样传输速度不理想啊,
[/Quote]
IOCP是效率最高的服务模型了。
可能你的代码上有点问题吧。
还有就是iocp在有大量请求的时候才能体现它的性能。

传输完成得到回显后,进行下一次投递.
这里影响速度了吧。
IOCP可以连续投递的
crosoli 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yuanmoren 的回复:]
引用楼主 crosoli 的回复:
1,得到a b 是一样.CreateFile readfile 都不耗运行时间和系统资源吗?


MSDN
GetTickCount Function
Return Value

The return value is the number of milliseconds that have elapsed since the system wa……
[/Quote]

返回值系统启动运行到现在的毫秒数.

为什么不理想?
crosoli 2010-11-18
  • 打赏
  • 举报
回复
1,都1M有的时候会13MS,基本上都是0MS,
2.是用的IOCP,


可这样传输速度不理想啊,
yuanmoren 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 crosoli 的回复:]
1,得到a b 是一样.CreateFile readfile 都不耗运行时间和系统资源吗?
[/Quote]
[Quote=MSDN]
GetTickCount Function
Return Value

The return value is the number of milliseconds that have elapsed since the system was started.
[/Quote]
milliseconds
耗费时间不到1毫秒,结果就是0
zjfhgdx 2010-11-18
  • 打赏
  • 举报
回复
1:读多点试试啊。
2:你用的是IOCP?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧