请问_lread(api),Readfile(api),Fileread(delphi),blockread(delphi)之间的区别,以及谁的速度更快?

Putao 2000-08-22 05:53:00
如题
...全文
169 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Putao 2000-08-24
  • 打赏
  • 举报
回复
竟无人回答,只好给分了:(
gigi2000 2000-08-23
  • 打赏
  • 举报
回复
API之网络函数1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件 FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行 GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性 GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度 GetFileTime 取得指定文件的时间信息 GetFileType 在给出文件句柄的前提下,判断文件类型 GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
10 服务器监控 使用命令来显示 Unix 服务器的高 CPU 资源占用会话。top 显示每个 CPU 的使用情况。 top 的输出分两部分。第一部分显示每个处理器的负载情况,第二部分显示使用 CPU 最多的会话信息。 # top load averages: 0.23, 0.53, 0.49 64 processes: 1 running, 21 sleeping, 42 idle CPU states: 7.5% user, 0.0% nice, 2.9% system, 89.4% idle Memory: Real: 772M/991M act/tot Virtual: 1965M use/tot Free: 15M PID USERNAME PRI NICE SIZE RES STATE TIME CPU COMMAND 837 afis 42 0 34M 29M sleep 128:39 11.70% unixsvr 824 afis 44 0 10M 1826K sleep 26:40 0.70% dtterm 5121 oracle 42 0 435M 15M sleep 0:01 0.60% oracle 717 root 44 0 10M 4358K sleep 13:43 0.30% Xdec 5120 root 44 0 5832K 3203K run 0:00 0.10% top 558 root 44 0 3640K 180K sleep 34:13 0.00% os_mibs 715 root 42 0 18M 11M sleep 0:02 0.00% smsd 775 afis 44 0 11M 1843K sleep 0:01 0.00% dtsession 5117 afis 54 10 8248K 565K sleep 0:00 0.00% dtscreen 5097 oracle 44 0 423M 3465K sleep 0:00 0.00% oracle 5101 oracle 44 0 427M 2793K sleep 0:00 0.00% oracle 5105 oracle 44 0 421M 2621K sleep 0:00 0.00% oracle 5103 oracle 44 0 421M 2138K sleep 0:00 0.00% oracle 562 root 44 0 2960K 851K sleep 0:00 0.00% cpq_mibs 5055 root 44 0 1936K 303K sleep 0:00 0.00% telnetd 作为一个 DBA 应该关心的内容有: Load averages:平均负载。如果大于 1 说明服务器负荷过重。 CPU states:CPU 信息概要。7.5% user 的意思是 CPU 有 7.5%是用户占用,其他 可按字面类推。 Memory:Free 表明可用的内存数量。本例子中可用内存是 15M。 IDLE:CPU 空闲百分比 2. 使用 sar sar 在 SVR4 环境中,例如 HP-UX、Solaris 中很普及,在 aix 中也可以用。Sar 命 令可以查看整体 CPU 消耗情况,磁盘、内存、JFS buffer 使用情况等。常见的 sar 使用 例子: sar -u 显示 CPU 活动情况。例如: # sar -u 2 5 AIX TSXJ 2 5 0052E51D4C00 10/09/06 System Configuration: lcpu=2 16:12:10 %usr %sys %wio %idle 16:12:12 100 0 0 0 16:12:14 99 1 0 0 16:12:16 99 0 0 0 16:12:18 41 1 26 31 16:12:20 46 1 0 53 Average 77 1 5 17 上面的命令每 2 秒显示一次 cpu 情况,显示 5 次。 sar -w 显示交换(swapping)活动。例如 5 秒钟显示一次,显示 5 次: # sar -w 5 5 HP-UX corp-hp1 B.11.00 U 9000/800 08/09/00 19:37:57 swpin/s bswin/s swpot/s bswot/s pswch/s 19:38:02 0.00 0.0 0.00 19:38:07 0.00 0.0 0.00 … 0.0 222 0.0 314 Average 0.00 0.0 0.00 0.0 294 上面的输出列的含义: swpin/s 每秒钟交换进(sawp-in)的进程数量 swpot/s 每秒钟交换出(sawp-out)的进程数量 bswin/s 每秒钟交换进的块数(每块512字节) bswot/s 每秒钟交换出的块数(每块512字节) pswch/s 每秒钟上下文交换数量 sar -b 显示 buffer 活动情况 # sar -b 1 6 HP-UX corp-hp1 B.11.00 U 9000/800 08/09/00 19:44:53 lread/s %rcache bwrit/s lwrit/s... 19:44:54 91 100 9 19... 19:44:55 0 0 0 5... 19:44:56 6 100 9 8... 19:44:57 30 100 9 20... 19:44:58 1 100 0 3... 19:44:59 1 100 9 4... Average 22 100 6 10... %wcache pread/s pwrit/s... 53 0 0... 100 0 0... 0 0 0... 55 0 0... 100 0 0... 0 0 0... 39 0 0... 各个列的含义: lread/s Number of reads per second from the Unix JFS buffer cache %rcache Buffer cache hit ratio (for the Unix JFS buffer cache) for read requests bwrit/s Number of physical writes to disk per second lwrit/s Number of writes per second to the Unix JFS buffer cache %wcache Buffer cache hit ratio (for the Unix JFS buffer cache) for write requests pread/s Number of reads per second from disk pwrit/s Number of writes per second to disk 3. 使用 vmstat vmstat 是通用的 UNIX 监控工具,vmstat 在 IRIX 操作系统中是 osview。vmstat 的 第一个参数是间隔的秒数,也可以带第二个参数,表明显示多少次。vmstat 不同操 作系统输出结果不一样,含义也可能有区别,具体要看 man 帮助。 # vmstat 3 kthr memory cpu ---- ... --------------- ... -------------- r b ... fre re pi sr ... cs us sy id wa 0 0 ... 207 0 1 0 ... 142 18 4 75 4 0 0 ... 187 0 4 0 ... 70 2 1 91 6 0 0 ... 184 0 0 0 ... 99 5 2 89 4 0 0 ... 165 0 0 0 ... 98 1 8 52 40 0 0 ... 150 0 3 0 ... 136 4 2 87 6 0 0 ... 141 0 1 0 ... 192 5 0 91 4 在 HP-UX 或 AIX 下 vmstat 输出中一些重要的信息: r 运行队列。当这个值超过CPU数量的时候,服务器就有CPU瓶颈(可以通 过lsdev -C|grep Process|wc -l 来获取CPU数量) pi page-in数量。这个参数非0暗示着系统缺少内存,内存被交换到磁盘。然而 当程序刚使用的时候也可能导致page-in非0。为了找到真正原因,则检查sr 列。如果sr也是非0,那么的确意味着缺少内存。 sr 扫描速率。如果扫描速率持续增加,那么页交换后台程序忙于分配内存页。 下面是CPU的一些信息: us 用户占用CPU的百分比 sy 系统占用CPU的百分比 id 空闲CPU百分比 wa 等待CPU的百分比 用户和系统百分比之和(us+sy)接近 100 时,说明 CPU 繁忙,但并不意味着 CPU 过载。sr 超过 CPU 数量的时候意味着 CPU 过载。当 CPU 等待(wa)超过 20 的时候,那么 20%或者更多的处理 时间在等待资源,通常是 I/O。通常在备份或者导出等 I/O 操作的时候这个百分比比较大;但如 果正常的时候这个值一直挺高则也可能有 I/O 瓶颈。 4. AIX 下显示交换区(Swap)使用情况 lsps -a 可用来显示交换使用情况。之前我们讨论过,Oracle 数据库在消耗过多的 服务器内存的时候有可能产生很多交换,而 PGA 的内存需求引起内存移动到交换盘 的操作。 # lsps -a Page Space Physical Volume Volume Group Size %Used Active Auto Type hd6 hdisk0 rootvg 512MB 1 yes yes lv 上面%Used 是 1,说明有 1%的交换。 5. 显示 HP-UX 下的交换区使用情况 # swapinfo -tam Mb Mb Mb... TYPE AVAIL USED FREE... dev 1024 25 999... reserve – 999 -999... memory 3966 3547 419... total 4990 4571 419... ... PCT Mb ... USED RESERVE PRI NAME ... 2% 1 /dev/vg00/lvol2 ... ... 89% ... 92% 0 - 6. 显示服务器平均负载情况(w 命令)。 Unix 的 w 命令用来显示高资源会话简单的信息。大多数的有经验的 Oracle DBA 都会 首先用这个命令来快速查看一下服务器负载情况,因为 w 命令在几乎所有的 Unix 下 都可以用。 # w 10:02AM up 60 days, 18:46, 3 users, load average: 0.32, 0.39, 0.43 User tty login@ idle JCPU PCPU what Oracle pts/0 08:17AM 0 80:18 80:16 w oracle pts/1 09:15AM 5 2 0 ftp miltonrv pts/2 01May 009days 0 0 -ksh 上面的输出中的 load average 分别是过去 1 分钟、5 分钟、15 分钟的负载情况。如 果大于 1 说明 CPU 紧张。 7. 使用 iostat iostat 显示物理磁盘 I/O 情况。下面的 3 表明 3 秒钟显示一次。 # iostat 3 System configuration: lcpu=2 disk=5 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.0 1302.0 1.8 0.6 89.3 8.3 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.4 2.8 0.7 15919 15112048 dac0 0.0 0.8 0.2 643384 3730076 dac0-utm 0.0 0.0 0.0 0 0 hdisk1 0.0 0.8 0.2 643384 3730076 cd0 0.0 0.0 0.0 0 0 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.3 3176.3 0.7 1.8 64.3 33.2 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 71.0 501.3 123.7 0 1504 dac0 0.0 0.0 0.0 0 0 dac0-utm 0.0 0.0 0.0 0 0 hdisk1 0.0 0.0 0.0 0 0 cd0 0.0 0.0 0.0 0 0 上面比较重要的列: Kb_read:过去的时间区间内读取得 K 字节数。(第一个显示的是历史总计,因此要看变 化情况,应该看其它的时间区间。) Kb_wrtn: 过去的时间区间内写入得 K 字节数。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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