[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# Gin_Q
最后一项用long long 就有精度了

TOP

本帖最后由 red2020 于 2020-2-26 23:53 编辑

回复 10# Gin_Q
你们速度都太慢了,我只需要66行代码0.3秒就能处理3万行。在windows下用gcc编译下,甭管你cpu多弱,只需0.3秒3万行。最后一行自带计时器
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define LINE_SIZE 1024
  5. #define FLT_MIN (1.17549e-038)
  6. #define FLT_MAX (3.40282e+038)
  7. #define COLS_SIZE 32
  8. float a[COLS_SIZE][3];
  9. char iName[COLS_SIZE][LINE_SIZE];
  10. int main(int argc, char** argv)
  11. {
  12. clock_t t = clock();
  13. FILE* fp = fopen(argv[1], "rb");
  14. for(int i = 0; i < COLS_SIZE; i ++) a[i][1] = FLT_MAX, a[i][2] = FLT_MIN;
  15. int countLines =  0, colsIndex = 0, strIndex = 0;
  16. char line[LINE_SIZE] = {0};
  17. fgets(line, LINE_SIZE, fp);
  18. char* p = line;
  19. while(*p)
  20. {
  21. switch(*p)
  22. {
  23. case ' ':
  24. case '\t':
  25. case '\r':
  26. case '\n':
  27. break;
  28. case ',':
  29. colsIndex ++;
  30. strIndex = 0;
  31. break;
  32. default:
  33. iName[colsIndex][strIndex++] = *p;
  34. break;
  35. }
  36. p ++;
  37. }
  38. colsIndex = 0;
  39. while(! feof(fp))
  40. {
  41. fgets(line, LINE_SIZE, fp);
  42. p = line;
  43. while(*p)
  44. if(*(p ++) == ',')
  45. {
  46. float t = atof(p);
  47. a[colsIndex][0] += t;
  48. if( t < a[colsIndex][1] ) a[colsIndex][1] = t;
  49. if( t > a[colsIndex][2] ) a[colsIndex][2] = t;
  50. if(++ colsIndex == 32) colsIndex = 0, countLines ++;
  51. }
  52. }
  53. fclose(fp);
  54. printf("%-30.30s %16s %16s %16s %16s\n","Item","Sum","Min","Max","Avg");
  55. for(int i = 0; i < COLS_SIZE; i ++) printf("%-30.30s -> %16.6f %16.6f %16.6f %16.6f\n", iName[i+1], a[i][0], a[i][1], a[i][2], a[i][0]/countLines);
  56. printf("Count %d lines spend time :%d (ms)\n", countLines, clock()-t);
  57. return 0;
  58. }
复制代码
这是效果图,整齐的一塌糊涂
  1. Item                                        Sum              Min              Max              Avg
  2. VDDCR_GFXCurrent(A)[0](A)      ->    214949.328125         2.007840      4000.015625         3.582489
  3. GPUTemperature(C)[0](C)        ->   2227779.500000        36.745071        38.434509        37.129658
  4. JunctionTemperature(C)[0](C)   ->   2235515.250000        36.784481        39.281551        37.258587
  5. MemTemperature(C)[0](C)        ->   2045027.750000        34.000000        34.776291        34.083796
  6. VR_GFX(C)[0](C)                ->   1665636.750000        27.000000        28.000000        27.760613
  7. VR_SOC(C)[0](C)                ->   1740000.000000        29.000000        29.000000        29.000000
  8. VR_MEM(C)[0](C)                ->         0.000000         0.000000         0.000000         0.000000
  9. VR_VDDCI(C)[0](C)              ->         0.000000         0.000000         0.000000         0.000000
  10. Liquid0(C)[0](C)               ->         0.000000         0.000000         0.000000         0.000000
  11. Liquid1(C)[0](C)               ->         0.000000         0.000000         0.000000         0.000000
  12. PLX(C)[0](C)                   ->         0.000000         0.000000         0.000000         0.000000
  13. Min(C)[0](C)                   ->   2140390.000000        35.354679        36.400101        35.673167
  14. GFXCLKFreq[0]()                ->  55465844.000000       832.818054      1224.018799       924.430733
  15. PWM[0]()                       ->         0.000000         0.000000         0.000000         0.000000
  16. FANSpeed[RPM][0]()             ->         0.000000         0.000000         0.000000         0.000000
  17. LimitPPT0(W)[0](W)             ->  11700000.000000       195.000000       195.000000       195.000000
  18. ValuePPT0(W)[0](W)             ->    825928.562500        10.208000        31.805269        13.765476
  19. GFXActivity(%)[0](%)           ->    224570.906250         0.674110        16.070761         3.742848
  20. PCIeLinkSpeed(GT/s)[0](GT/s)   ->    342500.000000         2.500000         8.000000         5.708333
  21. PCIeLinkWidth[0]()             ->    960000.000000        16.000000        16.000000        16.000000
  22. PCIeCorrectableError[0]()      ->         0.000000         0.000000         0.000000         0.000000
  23. PCIeUncorrectableError[0]()    ->         0.000000         0.000000         0.000000         0.000000
  24. PCIeResidencyGen1(%)[0](%)     ->   2802648.250000        38.709671        51.898739        46.710804
  25. PCIeResidencyGen2(%)[0](%)     ->         0.000000         0.000000         0.000000         0.000000
  26. PCIeResidencyGen3(%)[0](%)     ->   3197214.750000        48.101269        61.290329        53.286913
  27. PCIeResidencyGen4(%)[0](%)     ->         0.000000         0.000000         0.000000         0.000000
  28. PCIeResidencyL0(%)[0](%)       ->   6000000.000000       100.000000       100.000000       100.000000
  29. PCIeResidencyL0s(%)[0](%)      ->         0.000000         0.000000         0.000000         0.000000
  30. PCIeResidencyL1(%)[0](%)       ->         0.000000         0.000000         0.000000         0.000000
  31. FanPWMreading[%][0](%)         ->         0.000000         0.000000         0.000000         0.000000
  32. mclk[0](MHz)                   ->  11934225.000000       101.000000       876.000000       198.903750
  33. sclk[0](MHz)                   ->  62049740.000000       798.000000      1856.000000      1034.162333
  34. Count 60000 lines spend time :667 (ms)
复制代码
1

评分人数

TOP

回复 14# Gin_Q
学C语言要注重细节,化繁为简,代码要求精,必要的数学技巧也得学学。看得出你只是刚学会了语法,并没有掌握这门语言。

TOP

回复 16# Gin_Q
所以说细节很重要,只要能认真观察,发现事物的客观规律,你就会找到编程的捷径,同样一个功能实现的方法有很多种,善于对比,发觉其中的技巧,更有助于C水平的提升。

TOP

返回列表