转自:http://bbs.csdn.net/topics/360111289, 有改动。

#include <windows.h>
#include <stdio.h>
#include <process.h>
#include<memory>
#pragma comment(lib,"ws2_32.lib")
ULONGLONG g_nReadCounts=0,g_nWriteCounts=0,g_nOtherCounts=0,g_nReadsBytes=0,g_nWriteBytes=0,g_nOtherBytes=0;
void PrintIODetails() 
{
   static DWORD lastTickCount;
  static IO_COUNTERS lastIoCounters;
   DWORD tickCount;
 IO_COUNTERS ioCounters;
  static int firstTime = 1;
    tickCount = GetTickCount();
 if (!GetProcessIoCounters(GetCurrentProcess(), &ioCounters)) {
       return;
  }
 if (firstTime) 
  {
        firstTime = 0;
      printf("    Time    Reads   Writes   Others     Read(Bytes)    Write(Bytes)    Other(Bytes)\n");
       printf("--------------------------------------------------------------------------------\n");
  }
    else 
    {
        printf("%8lu%8llu%8llu%8llu%16llu%16llu%16llu\n",
          tickCount - lastTickCount,
           ioCounters.ReadOperationCount - lastIoCounters.ReadOperationCount,
           ioCounters.WriteOperationCount - lastIoCounters.WriteOperationCount,
         ioCounters.OtherOperationCount - lastIoCounters.OtherOperationCount,
         ioCounters.ReadTransferCount - lastIoCounters.ReadTransferCount,
         ioCounters.WriteTransferCount - lastIoCounters.WriteTransferCount,
           ioCounters.OtherTransferCount - lastIoCounters.OtherTransferCount
            );
        g_nReadCounts += (ioCounters.ReadOperationCount - lastIoCounters.ReadOperationCount);
      g_nWriteCounts += (ioCounters.WriteOperationCount - lastIoCounters.WriteOperationCount);
       g_nOtherCounts += (ioCounters.OtherOperationCount - lastIoCounters.OtherOperationCount);
       g_nReadsBytes += (ioCounters.ReadTransferCount - lastIoCounters.ReadTransferCount);
        g_nWriteBytes += (ioCounters.WriteTransferCount - lastIoCounters.WriteTransferCount);
      g_nOtherBytes += (ioCounters.OtherTransferCount - lastIoCounters.OtherTransferCount);
  }
 lastTickCount = tickCount;
  memcpy(&lastIoCounters, &ioCounters, sizeof(IO_COUNTERS));
}
#define PACKCOUNT 10
#define BUFFSIEZ 50000
volatile bool bWorkThreadFinish = false;
void workerThread(void * dummy) 
{
    int i;
   FILE * fp;
   char buff[BUFFSIEZ];
 WSADATA wsaData;
 SOCKET s;
    struct sockaddr_in localAddr;
    struct sockaddr_in peerAddr;
  memset(buff, 'X', sizeof(buff));
    Sleep(2000);
  // 写文件
   fp = fopen("io.txt", "w");
  if (fp) {
        printf("fwrite = %d\n", fwrite(buff, 1, sizeof(buff), fp));
       Sleep(10000);
        // 关闭文件,测试Flush
       printf("fclose\n");
        fclose(fp);
      Sleep(2000);
 }
 // 读文件
   fp = fopen("io.txt", "r");
  if (fp) {
        printf("fread = %d\n", fread(buff, 1, sizeof(buff), fp));
     fclose(fp);
      Sleep(2000);
 }
 // 网络发
    memset((void *)&localAddr, 0, sizeof(localAddr));
    localAddr.sin_family = AF_INET;
 localAddr.sin_addr.s_addr = htonl(INADDR_ANY);
  localAddr.sin_port = htons(0);
  memset((void *)&peerAddr, 0, sizeof(peerAddr));
  peerAddr.sin_family = AF_INET;
  peerAddr.sin_addr.s_addr = inet_addr("10.19.85.1");
   peerAddr.sin_port = htons(3389);
 printf("WSAStartup\n");
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    Sleep(2000);
  // UDP
   printf("UDP Test:\n");
 printf("socket\n");
    s = socket(AF_INET, SOCK_DGRAM, 0);
 Sleep(2000);
  printf("bind\n");
  bind(s, (struct sockaddr *)&localAddr, sizeof(localAddr));
   Sleep(2000);
 for (i = 0; i < PACKCOUNT; i++) {
      printf("sendto = %d\n", sendto(s, buff, i * 100, 0, (SOCKADDR *) &peerAddr, sizeof(peerAddr)));
       Sleep(2000);
 }
    printf("closesocket\n");
   closesocket(s);
  Sleep(2000);
  // TCP
   printf("TCP Test:\n");
 printf("socket\n");
    s = socket(AF_INET, SOCK_STREAM, 0);
    Sleep(2000);
  printf("bind\n");
  bind(s, (struct sockaddr *)&localAddr, sizeof(localAddr));
   Sleep(2000);
  printf("connect\n");
   connect(s, (SOCKADDR *) &peerAddr, sizeof(peerAddr));
    Sleep(2000);
  printf("send = %d\n", send(s, buff, sizeof(buff), 0));
    Sleep(2000);
  printf("closesocket\n");
   closesocket(s);
  Sleep(2000);
  printf("WSACleanup\n");
    WSACleanup();
 bWorkThreadFinish = true;
}
UINT _stdcall ThreadProc(PVOID pv)
{
   workerThread(pv);
    return 1;
}
//HANDLE g_hEvt = NULL;
int main(int argc, char ** argv) 
{
 // 启动工作线程
    ::_beginthreadex(NULL,0,ThreadProc,NULL,0,0);
 //g_hEvt = ::CreateEventW(NULL,FALSE,FALSE,NULL);
   
  printf("Ctrl-C to exit\n\n");
  for (;;) 
    {
        PrintIODetails();
        Sleep(1000);
     if (bWorkThreadFinish)
       {
            break;
       }   
 }
    printf("*********************************Total*************************************\n");
   printf("    Reads   Writes   Others     Read(Bytes)    Write(Bytes)    Other(Bytes)\n");
   printf("%8llu%8llu%8llu%16llu%16llu%16llu\n",
      g_nReadCounts,
       g_nWriteCounts,
      g_nOtherCounts,
      g_nReadsBytes,
       g_nWriteBytes,
       g_nOtherBytes
        );
   return 0;
}

转载于:https://www.cnblogs.com/qinfengxiaoyue/p/3712227.html

Windows IO 性能简单测试相关推荐

  1. MySQL中MyISAM引擎与InnoDB引擎性能简单测试[转]

    MySQL中MyISAM引擎与InnoDB引擎性能简单测试 [硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows ...

  2. INNODB在裸设备上的性能简单测试

    INNODB在裸设备上的性能简单测试     裸设备简单测试 2009年4月28日 我这里用的SUN VBOX以及SUPER-SMACK来得到的数据. 至于SUPER-SMACK的介绍参见我以前的文章 ...

  3. android ORM框架的性能简单测试(androrm vs ormlite)

    2019独角兽企业重金招聘Python工程师标准>>> 前言 看了一下现在的android设备,性能都不差,就懒得直接用sqlite,直接上ORM框架把,上网搜了一圈,觉得andro ...

  4. MySQL中MyISAM引擎与InnoDB引擎性能简单测试

    转自:http://blog.csdn.net/heiyeshuwu/archive/2007/04/10/1559640.aspx [硬件配置] CPU : AMD2500+ (1.8G) 内存: ...

  5. 源 arm_arm和X86处理器性能简单测试

    写在最前面 说了这个测试主要是想说arm和X86的IPC(同频性能),评论一群文章都没好好看的人说这不能比那不能比的半吊子真的要把我搞气了.还有说Gamss慢的人,至少全中国也找不出几个能写出来这种软 ...

  6. mysql引擎测试_mysql引擎性能简单测试

    [硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows XP SP2 SE : PHP5.2.1 DB : MyS ...

  7. Storm性能简单测试

    看了很多关于Storm性能的文章,说法不一,自己根据实际业务测一下是否能满足自身要求(只做了简单集群和代码调优) 场景:kafka消费数据标准化后存储到Hbase中 服务器资源: 两台32G内存做Su ...

  8. kafak windows环境的简单测试笔记

    1:进入到kafka目录下cmd指令,先运行zookeeper,: 运行:.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.pro ...

  9. 网站压力性能免费在线测试:阿里云PTS,Load Impact,loader.io服务器负载能力测试

    原文链接:https://www.freehao123.com/pts-loader-io/ 经常看到不少人的在购买主机前会询问服务器的配置到底能够承受多少的访问量.这个问题其实比较难回答,因为影响服 ...

最新文章

  1. QEMU和KVM 中断处理过程
  2. jquery ajax怎么实现,你认为他有什么不足之处
  3. android 文本倒影,android案例---图片处理倒影效果
  4. 【java】IDEA安装VisualVM插件-使用介绍 检测死锁 内存 cpu 慢方法
  5. iPhone平台下的游戏开发
  6. 30. 确保目标空间足够大
  7. sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
  8. 经验| 张家口交通综合运行协调与应急指挥中心建设
  9. 频谱泄漏 matlab,关于MATLAB FFT频谱泄露和加窗
  10. A good article :csi cameras on the TX2 (the easy Way)
  11. opencv去除图片黑边,黑色背景
  12. 渝粤题库 陕西师范大学 《中国古代文学(四)》作业
  13. python实现连环阵
  14. XDOJ32角谷定理
  15. 网站域名过户查询_域名知识问答之域名过户
  16. 根据工作日历推算工作日的算法
  17. MKS Robin E3D V1.1 Klipper固件使用说明书
  18. 大前端开发 前端如何开发 APP
  19. 骑行318、 2016.7.25
  20. jar文件打不开解决办法

热门文章

  1. 可能是你见过的最完善的微前端解决方案
  2. jmeter(二十二)内存溢出原因及解决方法
  3. -bash: fork: Cannot allocate memory问题,进程数满了的解决办法
  4. 关于发邮件报错535 Error:authentication failed解决方法
  5. Express-js无法获取我的静态文件,为什么?
  6. 在C ++中将int转换为字符串的最简单方法
  7. winform ctrl键单击多选_鼠标各键在CAD中的运用,左右键常用,但滚轮这个功能不一定用过...
  8. Android:安卓线性布局(属性)
  9. 2019重庆对口高职计算机类分数排名,重庆2019高职分类考试分数线公布
  10. java 获取xml 版本号_java解析xml获取对应值