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