VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2993|回复: 0

[原创] (C语言)csv文件数据分析比较!

[复制链接]
93_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-10 11:09:17 | 显示全部楼层 |阅读模式
本帖最后由 gin 于 2020-4-10 11:11 编辑
  1. #if 0
  2.         By Cool_Breeze
  3.         Rev 02
  4.         #endif
  5. #include <stdio.h>
  6. #include <unistd.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include <stddef.h>
  10. #include <malloc.h>
  11. #include <float.h>
  12. #include <errno.h>

  13. typedef unsigned long long intll;

  14. FILE* fileptr(char* file, char* mode);
  15. //源文件解析
  16. void scantext(FILE* fp, intll* inu);
  17. void getname(FILE* fp, char* name, intll si);
  18. void getdata(FILE* fp, double* max, double* min, double* avg, double* sum, double* count,\
  19.         intll ns, intll nl, char* max_n, char* min_n);
  20. //limit文件解析
  21. void limittext(FILE* fp, intll* inu);
  22. void getlimitdata(FILE* fp,char* name, char* item, char* comp, double* data);

  23. int compare(char *cmp,double s,double l);
  24. void output(FILE* fp,int flag,int n,char* name,char* litem,double sdata,char* comp,double ldata);
  25. #define LINES 1024
  26. #define NAMESIZE 100
  27. #define COMPSIZE 3

  28. static char temp[LINES];
  29. static char const delim[]=",";
  30. static int ERROR=0;//ERROR退出值,0代表Pass ,非0代表Fail

  31. int main(int argc,char **argv)
  32. {
  33.         static char usage[NAMESIZE]="-s source.csv\n-l limit.csv\n-r result.csv";
  34.         static char source[NAMESIZE];
  35.         static char limit[NAMESIZE];
  36.         static char result[NAMESIZE];
  37.         register int opt=0;
  38.         while ((opt = getopt(argc,argv,"-s:-l:-r:")) != -1)
  39.                 switch (opt)
  40.                 {
  41.                         case 's': strcpy(source,optarg);break;
  42.                         case 'l': strcpy(limit,optarg);break;
  43.                         case 'r': strcpy(result,optarg);break;
  44.                         default : printf("%s\n",usage);exit(EXIT_SUCCESS);
  45.                 }
  46.                
  47.         FILE* fpi=fileptr(source,"rb");
  48.         FILE* lpi=fileptr(limit,"rb");
  49.         FILE* fpo=fileptr(result,"wb");
  50.         
  51.         //开始源文件解析
  52.         static intll inu,isize=NAMESIZE;
  53.         scantext(fpi,&inu);
  54.         char* iname=(char*)calloc(inu,sizeof(char)*isize);
  55.         char* max_n=(char*)calloc(inu,sizeof(char)*isize);
  56.         char* min_n=(char*)calloc(inu,sizeof(char)*isize);
  57.         getname(fpi, iname, isize);
  58.         double* max=(double*)calloc(inu,sizeof(double));
  59.         double* min=(double*)calloc(inu,sizeof(double));
  60.         double* avg=(double*)calloc(inu,sizeof(double));
  61.         double* sum=(double*)calloc(inu,sizeof(double));
  62.         double* count=(double*)calloc(inu,sizeof(double));
  63.         register intll i=0;
  64.         for (i=0;i<inu;i++) *(min+i)=DBL_MAX, *(max+i)=LDBL_MIN;
  65.         getdata(fpi, max, min, avg, sum, count, isize, inu, max_n, min_n);
  66.         //源文件解析完成
  67.         
  68.         //开始limit文件解析
  69.         static intll lnu,lsize=NAMESIZE;
  70.         limittext(lpi,&lnu);
  71.         char* lname=(char*)calloc(lnu,sizeof(char)*lsize);
  72.         char* litem=(char*)calloc(lnu,sizeof(char)*lsize);
  73.         char* comp=(char*)calloc(lnu,sizeof(char)*COMPSIZE);
  74.         double* ldata=(double*)calloc(lnu,sizeof(double)*lsize);
  75.         getlimitdata(lpi, lname, litem, comp, ldata);
  76.         //limit文件解析完成
  77.         
  78.         static const char li_comp[3][10]={{"Max"},{"Min"},{"Avg"}};
  79.         
  80.         register int j=0,flag=1;
  81.         register int k=0;
  82.         fprintf(fpo," Result\r\n");
  83.         fprintf(fpo," Nu, Item, Options, %s, Comp, %s, Result\r\n",source,limit);
  84.         for (i=0;i<lnu;i++)
  85.                 for (j=0;j<inu-1;j++)
  86.                         if ( ! strcmp(lname+i*NAMESIZE,iname+(j+1)*NAMESIZE) )//匹配项目名 (j+1)跳过第一项数据生成时间项
  87.                         {
  88.                                 for (k=0;k<3;k++) if ( ! strcmp(litem+i*NAMESIZE,li_comp[k]) ) break;
  89.                                 switch (k)
  90.                                 {
  91.                                         case 0:        flag=compare(comp+i*COMPSIZE,*(max+j),*(ldata+i));
  92.                                                         output(fpo,flag,(j+1),lname+i*NAMESIZE,litem+i*NAMESIZE,max[j],comp+i*COMPSIZE,ldata[i]);
  93.                                                         break;
  94.                                         case 1:        flag=compare(comp+i*COMPSIZE,*(min+j),*(ldata+i));
  95.                                                         output(fpo,flag,(j+1),lname+i*NAMESIZE,litem+i*NAMESIZE,min[j],comp+i*COMPSIZE,ldata[i]);
  96.                                                         break;
  97.                                         case 2:        flag=compare(comp+i*COMPSIZE,*(avg+j),*(ldata+i));
  98.                                                         output(fpo,flag,(j+1),lname+i*NAMESIZE,litem+i*NAMESIZE,avg[j],comp+i*COMPSIZE,ldata[i]);
  99.                                                         break;
  100.                                         default :        break;
  101.                                 }
  102.                         }
  103.         //输出源文件和limit文件内容
  104.         fprintf(fpo," %s\r\n",limit);
  105.         fprintf(fpo," Nu, Item, Comp_Item, Comp, Data\r\n");
  106.         for (i=0;i<lnu;i++)  fprintf(fpo,"%-d, %s, %s, %s,%lf\r\n",i+1,lname+i*NAMESIZE,litem+i*NAMESIZE,comp+i*COMPSIZE,*(ldata+i));
  107.         fprintf(fpo," %s\r\n",source);
  108.         fprintf(fpo," Nu, Item, Count, Max, Max_Date, Min, Min_Date, Sum, Avg\r\n");
  109.         for (i=0;i<inu-1;i++) fprintf(fpo,"%-d, %s, %.0lf, %.6lf, %s, %.6lf, %s, %.6lf, %.6lf\r\n",\
  110.         i+1,iname+(i+1)*isize,*(count+i),*(max+i),max_n+i*isize,*(min+i),min_n+i*isize,*(sum+i),*(avg+i));
  111.         
  112.         free(iname);
  113.         free(max);
  114.         free(min);
  115.         free(avg);
  116.         free(sum);
  117.         free(count);
  118.         free(max_n);
  119.         free(min_n);
  120.         free(lname);
  121.         free(litem);
  122.         free(comp);
  123.         free(ldata);
  124.         fclose(fpi);
  125.         fclose(fpo);
  126.         return ERROR;
  127. }
  128. FILE* fileptr(char* file, char* mode)
  129. {
  130.         FILE* fp = fopen(file,mode);
  131.         if (fp == NULL)
  132.         {
  133.                 printf("open file fail!:%s",strerror(errno));
  134.                 exit(EXIT_FAILURE);
  135.         }
  136.         return fp;
  137. }
  138. void scantext(FILE* fp, intll* inu)
  139. {
  140.         rewind(fp);
  141.         register intll i=0;//记录项目数
  142.         char *p;
  143.         fgets(temp,LINES,fp);
  144.         p=strtok(temp,delim);
  145.         while(p != NULL)
  146.         {
  147.                 i++;
  148.                 p=strtok(NULL,delim);
  149.         }
  150.         *inu=i;
  151. }
  152. void getname(FILE* fp, char* name, intll si)
  153. {
  154.         rewind(fp);
  155.         fgets(temp,LINES,fp);
  156.         char* p=strtok(temp,delim);
  157.         register intll i=0,l;
  158.         while (p != NULL)
  159.         {
  160.                 strcpy(name+i*si,p);
  161.                 p=strtok(NULL,delim);
  162.                 i++;
  163.         }
  164.         i--;
  165.         l=strlen(name+i*si);
  166.         while (l--)
  167.                 if (*(name+i*si+l) == 0xA || *(name+i*si+l) == 0xD)//最后一列丢弃换行,回车
  168.                         *(name+i*si+l) = '\0';
  169.                 else break;
  170. }
  171. void getdata(FILE* fp, double* max, double* min, double* avg, double* sum, double* count,\
  172.         intll ns, intll nl, char* max_n, char* min_n)
  173. {
  174.         rewind(fp);
  175.         fgets(temp,LINES,fp);
  176.         
  177.         register double t=0;
  178.         register intll i=0;
  179.         register intll cou=0;
  180.         register intll stl=0;
  181.         char *p=NULL;
  182.         char *pb=NULL;
  183.         
  184.         while (fgets(temp,LINES,fp))
  185.         {
  186.                 cou++;
  187.                 i=0;
  188.                 p=pb=strtok(temp,delim);//按指定字符分割字符串 ,pb指向字符串的第一列数据
  189.                 if ( cou == 1 )
  190.                 {
  191.                         int i;
  192.                         stl=strlen(pb);
  193.                         for (i=0;i<nl-1;i++)
  194.                         {
  195.                                 memmove(max_n+i*ns,pb,stl);
  196.                                 *(max_n+i*ns+stl)='\0';
  197.                                 memmove(min_n+i*ns,pb,stl);
  198.                                 *(min_n+i*ns+stl)='\0';
  199.                         }
  200.                 }
  201.                 do
  202.                 {
  203.                         p=strtok(NULL,delim);//遍历每一项数据
  204.                         if (p == NULL) break;
  205.                         t=atof(p);
  206.                         stl=strlen(pb);
  207.                         if (t > *(max+i))
  208.                         {
  209.                                 *(max+i) = t;
  210.                                 memmove(max_n+i*ns,pb,stl);
  211.                                 *(max_n+i*ns+stl)='\0';
  212.                         }
  213.                         if (t < *(min+i))
  214.                         {
  215.                                 *(min+i) = t;
  216.                                 memmove(min_n+i*ns,pb,stl);
  217.                                 *(min_n+i*ns+stl)='\0';
  218.                         }
  219.                         *(sum+i)+=t;
  220.                         i++;
  221.                 }while (1);
  222.         }
  223.         register intll j;
  224.         for (j=0; j<nl-1; j++)//如果最后一行字符串小于标准列数,单独计算平均值和计数器
  225.         {
  226.                 if (j < i) *(avg+j)=*(sum+j)/cou,*(count+j)=cou;
  227.                 else *(avg+j)=*(sum+j)/(cou-1),*(count+j)=cou-1;
  228.         }
  229. }

  230. //limit文件解析
  231. void limittext(FILE* fp, intll* inu)
  232. {
  233.         rewind(fp);
  234.         register intll i=0;
  235.         while (fgets(temp,LINES,fp))
  236.                 i++;//读取行数
  237.         *inu=i;
  238. }
  239. void getlimitdata(FILE* fp,char* name, char* item, char* comp, double* data)
  240. {
  241.         rewind(fp);
  242.         char* p=temp;
  243.         register intll i=0,count=0,psize=0;
  244.         while (fgets(temp,LINES,fp))
  245.         {
  246.                 count=0;
  247.                 p=strtok(temp,delim);
  248.                 do
  249.                 {
  250.                         if(p == NULL) break;
  251.                         psize=strlen(p);//按分割每个符分割字符串
  252.                         switch (count)
  253.                         {
  254.                                 case 0:        memmove(name+i*NAMESIZE,p,psize);
  255.                                                 *(name+i*NAMESIZE+psize)='\0';break;
  256.                                 case 1: memmove(item+i*NAMESIZE,p,psize);
  257.                                                 *(item+i*NAMESIZE+psize)='\0';break;
  258.                                 case 2:        memmove(comp+i*COMPSIZE,p,psize);
  259.                                                 *(comp+i*COMPSIZE+psize)='\0';break;
  260.                                 case 3: *(data+i) = atof(p);break;
  261.                                 default : break;
  262.                         }
  263.                         count++;
  264.                 } while (p=strtok(NULL,delim));
  265.                 i++;
  266.         }
  267. }
  268. //数据比较
  269. int compare(char *cmp,double s,double l)
  270. {
  271.         if (! strcmp(cmp,"<")) return (s < l)? 1:0;
  272.         else if (! strcmp(cmp,">")) return (s > l)? 1:0;
  273.         else if (! strcmp(cmp,"=")) return (s = l)? 1:0;
  274.         else if (! strcmp(cmp,"<=")) return (s <= l)? 1:0;
  275.         else if (! strcmp(cmp,">=")) return (s >= l)? 1:0;
  276. }
  277. //输出
  278. void output(FILE* fp,int flag,int n,char* name,char* litem,double sdata,char* comp,double ldata)
  279. {
  280.         if (flag)
  281.                 fprintf(fp,"%-d, %s, %s,%.5lf, %s,%.5lf, Pass,\r\n",n,name,litem,sdata,comp,ldata);        
  282.         else
  283.         {
  284.                 fprintf(fp,"%-d, %s, %s,%.5lf, %s,%.5lf, Fail,\r\n",n,name,litem,sdata,comp,ldata);
  285.                 ERROR++;
  286.         }
  287. }
复制代码

源文件:
  1. time stamp, GPU Temperature (C) [0] (C), Junction Temperature (C) [0] (C), Mem Temperature (C) [0] (C), VR_GFX (C) [0] (C), VR_SOC (C) [0] (C), VR_MEM (C) [0] (C), VR_VDDCI (C) [0] (C), Liquid0 (C) [0] (C), Liquid1 (C) [0] (C), PLX (C) [0] (C), Min (C) [0] (C), GFXCLK Freq [0] (), PWM [0] (), FAN Speed [RPM] [0] (), Limit PPT0 (W) [0] (W), Value PPT0 (W) [0] (W), GFX Activity (%) [0] (%), PCIe Link Speed (GT/s) [0] (GT/s), PCIe Link Width [0] (), PCIe Correctable Error [0] (), PCIe Uncorrectable Error [0] (), PCIe Residency Gen 1 (%) [0] (%), PCIe Residency Gen 2 (%) [0] (%), PCIe Residency Gen 3 (%) [0] (%), PCIe Residency Gen 4 (%) [0] (%), PCIe Residency L0 (%) [0] (%), PCIe Residency L0s (%) [0] (%), PCIe Residency L1 (%) [0] (%), Fan PWM reading [%] [0] (%), mclk[0] (MHz), sclk[0] (MHz)
  2. 00:41:43.292, 41.36250, 41.36250, 42.00000, 33.00000, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 38.85000, 783.68744, 0.00000, 124.55593, 165.00000, 12.23484, 28.04605, 8.00000, 16.00000, 0.00000, 0.00000, 0.00000, 0.00000, 100.00000, 0.00000, 100.00000, 0.00000, 0.00000, 0.00000, 101.0,  781.0
  3. 00:41:44.339, 40.57681, 40.58622, 42.00000, 33.00000, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 38.50471, 783.88538, 0.00000, 124.55510, 165.00000, 9.72985, 1.56070, 8.00000, 16.00000, 0.00000, 0.00000, 60.00000, 0.00000, 40.00000, 0.00000, 100.00000, 0.00000, 0.00000, 0.00000, 101.0,  783.0
  4. 00:41:45.371, 42.58641, 45.18058, 42.00000, 33.00000, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 39.46432, 991.20605, 1.87348, 124.55509, 165.00000, 40.61980, 39.77980, 8.00000, 16.00000, 0.00000, 0.00000, 30.00000, 0.00000, 70.00000, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1532.0
  5. 00:41:46.404, 51.70063, 63.22072, 48.43563, 33.56438, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 45.59245, 1548.99268, 14.84375, 321.30173, 165.00000, 164.99956, 96.44620, 8.00000, 16.00000, 0.00000, 0.00000, 20.68966, 0.00000, 79.31035, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1547.0
  6. 00:41:47.436, 53.12355, 64.55281, 51.67248, 34.53392, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 46.97141, 1545.35413, 14.84375, 934.19299, 165.00000, 165.00191, 96.96519, 8.00000, 16.00000, 0.00000, 0.00000, 15.38462, 0.00000, 84.61539, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1541.0
  7. 00:41:48.468, 53.81395, 65.14874, 52.00000, 35.13857, 34.57849, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 47.64244, 1545.16492, 14.84375, 697.11292, 165.00000, 164.99620, 97.30402, 8.00000, 16.00000, 0.00000, 0.00000, 12.50000, 0.00000, 87.50000, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1531.0
  8. 00:41:49.501, 54.39037, 65.75484, 52.00000, 36.00000, 35.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 48.25992, 1553.07312, 14.84375, 516.50922, 165.00000, 164.99942, 95.85622, 8.00000, 16.00000, 0.00000, 0.00000, 10.52632, 0.00000, 89.47369, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1538.0
  9. 00:41:50.533, 54.87136, 66.29603, 53.86047, 36.32170, 35.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 48.84981, 1548.97766, 15.06767, 457.48981, 165.00000, 164.96523, 95.95676, 8.00000, 16.00000, 0.00000, 0.00000, 8.95522, 0.00000, 91.04478, 0.00000, 100.00000, 0.00000, 0.00000, 16.00000, 876.0,  1576.0
复制代码

limit文件:
  1. VDDCR_GFX Current (A) [0] (A),Avg,>,150
  2. GPU Temperature (C) [0] (C),Max,<,88
  3. Junction Temperature (C) [0] (C),Min,<=,108
  4. Mem Temperature (C) [0] (C),Max,<=,120
  5. Limit PPT0 (W) [0] (W),Avg,<,300
  6. PCIe Link Speed (GT/s) [0] (GT/s),Max,>=,8
  7. Fan PWM reading [%] [0] (%),Min,<=,2150
  8. mclk[0] (MHz),Min,>=,56
  9. sclk[0] (MHz),Max,>,66
复制代码

result文件:
  1. Result
  2. Nu, Item, Options, tes.csv, Comp, limit.csv, Result
  3. 1,  VDDCR_GFX Current (A) [0] (A), Avg,123.75536, >,150.00000, Fail,
  4. 2,  GPU Temperature (C) [0] (C), Max,84.67364, <,88.00000, Pass,
  5. 3,  Junction Temperature (C) [0] (C), Min,36.78448, <=,108.00000, Pass,
  6. 4,  Mem Temperature (C) [0] (C), Max,98.00000, <=,120.00000, Pass,
  7. 16,  Limit PPT0 (W) [0] (W), Avg,195.00000, <,300.00000, Pass,
  8. 19,  PCIe Link Speed (GT/s) [0] (GT/s), Max,8.00000, >=,8.00000, Pass,
  9. 30,  Fan PWM reading [%] [0] (%), Min,0.00000, <=,2150.00000, Pass,
  10. 31,  mclk[0] (MHz), Min,101.00000, >=,56.00000, Pass,
  11. 32,  sclk[0] (MHz), Max,2084.00000, >,66.00000, Pass,
  12. limit.csv
  13. Nu, Item, Comp_Item, Comp, Data
  14. 1,  VDDCR_GFX Current (A) [0] (A), Avg, >,150.000000
  15. 2,  GPU Temperature (C) [0] (C), Max, <,88.000000
  16. 3,  Junction Temperature (C) [0] (C), Min, <=,108.000000
  17. 4,  Mem Temperature (C) [0] (C), Max, <=,120.000000
  18. 5,  Limit PPT0 (W) [0] (W), Avg, <,300.000000
  19. 6,  PCIe Link Speed (GT/s) [0] (GT/s), Max, >=,8.000000
  20. 7,  Fan PWM reading [%] [0] (%), Min, <=,2150.000000
  21. 8,  mclk[0] (MHz), Min, >=,56.000000
  22. 9,  sclk[0] (MHz), Max, >,66.000000
  23. tes.csv
  24. Nu, Item, Count, Max, Max_Date, Min, Min_Date, Sum, Avg
  25. 1,  VDDCR_GFX Current (A) [0] (A), 36384, 244.956880, 20:32:05.864, 2.007840, 19:29:01.189, 4502714.966540, 123.755359
  26. 2,  GPU Temperature (C) [0] (C), 36384, 84.673640, 22:06:03.904, 36.745070, 19:29:01.189, 2933954.125140, 80.638581
  27. 3,  Junction Temperature (C) [0] (C), 36384, 99.827960, 22:06:07.134, 36.784480, 19:29:01.189, 3387563.903270, 93.105868
  28. 4,  Mem Temperature (C) [0] (C), 36384, 98.000000, 22:06:16.874, 34.000000, 19:29:02.245, 3384580.249270, 93.023863
  29. 5,  VR_GFX (C) [0] (C), 36384, 85.000000, 22:06:15.774, 27.000000, 19:29:01.189, 2967047.724460, 81.548145
  30. 6,  VR_SOC (C) [0] (C), 36384, 79.000000, 22:05:59.594, 29.000000, 19:29:01.189, 2790556.417030, 76.697351
  31. 7,  VR_MEM (C) [0] (C), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  32. 8,  VR_VDDCI (C) [0] (C), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  33. 9,  Liquid0 (C) [0] (C), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  34. 10,  Liquid1 (C) [0] (C), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  35. 11,  PLX (C) [0] (C), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  36. 12,  Min (C) [0] (C), 36384, 79.158970, 22:06:02.803, 35.354680, 19:29:01.189, 2755640.988070, 75.737714
  37. 13,  GFXCLK Freq [0] (), 36384, 2067.620360, 05:42:38.450, 804.097780, 00:42:47.646, 69755491.926140, 1917.202395
  38. 14,  PWM [0] (), 36384, 60.548110, 22:06:21.194, 0.000000, 19:29:01.189, 1782709.728940, 48.997079
  39. 15,  FAN Speed [RPM] [0] (), 36384, 2452.709470, 22:06:26.614, 0.000000, 19:29:01.189, 78159803.685400, 2148.191614
  40. 16,  Limit PPT0 (W) [0] (W), 36384, 195.000000, 19:29:01.189, 195.000000, 19:29:01.189, 7094880.000000, 195.000000
  41. 17,  Value PPT0 (W) [0] (W), 36384, 195.003540, 02:33:50.597, 10.208000, 19:29:01.189, 6370334.954680, 175.086163
  42. 18,  GFX Activity (%) [0] (%), 36384, 99.975200, 00:42:08.825, 0.073530, 00:51:53.411, 3120834.797830, 85.774923
  43. 19,  PCIe Link Speed (GT/s) [0] (GT/s), 36384, 8.000000, 19:29:01.189, 2.500000, 19:29:02.245, 289350.500000, 7.952685
  44. 20,  PCIe Link Width [0] (), 36384, 16.000000, 19:29:01.189, 16.000000, 19:29:01.189, 582144.000000, 16.000000
  45. 21,  PCIe Correctable Error [0] (), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  46. 22,  PCIe Uncorrectable Error [0] (), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  47. 23,  PCIe Residency Gen 1 (%) [0] (%), 36384, 51.898740, 19:29:09.790, 2.522750, 19:33:32.379, 114556.277570, 3.148534
  48. 24,  PCIe Residency Gen 2 (%) [0] (%), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  49. 25,  PCIe Residency Gen 3 (%) [0] (%), 36384, 97.477250, 19:33:32.379, 48.101270, 19:29:09.790, 3523843.723860, 96.851466
  50. 26,  PCIe Residency Gen 4 (%) [0] (%), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  51. 27,  PCIe Residency L0 (%) [0] (%), 36384, 100.000000, 19:29:01.189, 99.997400, 20:40:54.996, 3638374.158400, 99.999290
  52. 28,  PCIe Residency L0s (%) [0] (%), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  53. 29,  PCIe Residency L1 (%) [0] (%), 36384, 0.000000, 19:29:01.189, 0.000000, 19:29:01.189, 0.000000, 0.000000
  54. 30,  Fan PWM reading [%] [0] (%), 36384, 60.000000, 19:32:11.820, 0.000000, 19:29:01.189, 1782582.000000, 48.993569
  55. 31,  mclk[0] (MHz), 36383, 32327430.000000, 01:14:48.400, 101.000000, 19:29:01.189, 62883779.700000, 1728.383577
  56. 32,  sclk[0] (MHz), 36383, 2084.000000, 22:58:23.259, 796.000000, 19:56:22.313, 69639761.000000, 1914.074183
复制代码




上一篇:迷茫了,还是易语言比较方便啊,C++太难了!
下一篇:初学Windows编程,关于字符集的问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-29 19:21

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表