- //count.cpp
- #include <iostream>
- #include <chrono>
- using namespace std;
- int num;
- long long sum = 0;
- int main(int argc, char const *argv[])
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- string f = argv[1];
- int n = atoi(argv[2]);
- freopen((f + ".txt").c_str(), "w", stdout);
- cout << f << ":" << endl;
- #ifdef __linux__
- f = "./" + f;
- #endif
- cout << "num=" << num << endl;
- cout << "n=" << n << endl;
- cout << "val={";
- for (int i = 1; i <= n; i++)
- {
- auto timeStart = chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch());
- system((f + " > a.txt").c_str());
- auto timeEnd = chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch());
- long long time = timeEnd.count() - timeStart.count();
- cout << time << "," << flush;
- sum += time;
- }
- cout << "}" << endl;
- cout << "avg=" << (double)sum / n << endl;
- return 0;
- }
复制代码- //printf.c
- #include <stdio.h>
- int num;
- int main()
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- for (int i = 1; i <= num; i++)
- printf("a");
- return 0;
- }
复制代码- printf.exe:
- num=10000000
- n=100
- val={1241,1275,1035,1051,1062,1029,1020,1032,1016,1015,1032,1126,1092,1050,1022,1037,1025,1023,1040,1022,1030,1020,1027,1038,1025,1023,1019,1012,1023,1018,1025,1065,1063,1025,1026,1067,1053,1026,1023,1020,1009,1023,1025,1090,1057,1036,1018,1024,1021,1020,1020,1028,1031,1026,1058,1033,1026,1022,1029,1031,1016,1080,1021,1057,1022,1035,1034,1023,1025,1025,1016,1037,1021,1025,1024,1023,1026,1028,1034,1065,1013,1060,1023,1026,1012,1014,1024,1033,1024,1027,1022,1039,1019,1025,1019,1026,1026,1028,1027,1037,}
- avg=1036.61
复制代码- //printf+setvbuf_8192.c
- #include <stdio.h>
- #define buffer 8192
- int num;
- char buf[buffer];
- int main()
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- setvbuf(stdout, buf, _IOFBF, buffer);
- for (int i = 1; i <= num; i++)
- printf("a");
- return 0;
- }
复制代码- printf+setvbuf_8192.exe:
- num=10000000
- n=100
- val={1225,1016,991,1017,1011,1019,1001,1014,1000,1013,1006,1022,1003,1004,1016,1018,1001,1004,1006,1027,1011,1111,1083,1014,1007,1012,999,1015,1002,1013,1011,1008,1001,1008,1001,1009,1005,1045,1037,1009,1013,1089,1026,1008,1007,1006,1009,1006,1000,1005,1002,995,1001,1006,994,1005,1005,1010,1018,1043,1008,1000,1062,1000,991,1008,1014,1002,990,1008,1012,994,1008,993,1005,1001,1002,1005,999,1006,1015,1002,1003,996,1003,999,1016,1000,1003,1043,1007,1000,1016,1002,997,996,1003,1008,1000,1056,}
- avg=1013.36
复制代码- //printf+flush.c
- #include <stdio.h>
- int num;
- int main()
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- for (int i = 1; i <= num; i++)
- printf("a"), fflush(stdout);
- return 0;
- }
复制代码- printf+flush.exe:
- num=10000000
- n=100
- val={23638,23985,24179,25381,24482,25112,23435,23416,23257,23877,23874,23390,23270,23279,23699,24088,23535,23640,23438,23446,23364,23216,23329,23460,23703,23770,
复制代码- //cout.cpp
- #include <iostream>
- using namespace std;
- int num;
- int main()
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- for (int i = 1; i <= num; i++)
- cout << 'a';
- return 0;
- }
复制代码- cout.exe:
- num=10000000
- n=100
- val={512,507,497,509,502,496,499,501,499,500,525,528,516,510,530,849,515,557,532,588,541,550,520,526,679,517,502,511,532,590,515,641,583,591,570,567,588,512,519,525,535,686,507,700,513,506,527,504,553,504,529,530,521,511,522,513,521,513,506,514,529,510,506,502,589,676,501,491,503,506,494,515,560,511,509,504,499,612,513,738,502,514,512,517,511,493,503,503,510,507,507,555,539,497,509,504,502,518,651,499,}
- avg=535.87
复制代码- //cout+no_sync.cpp
- #include <iostream>
- using namespace std;
- int num;
- int main()
- {
- FILE *fp = fopen("num.txt", "r");
- fscanf(fp, "%d", &num);
- fclose(fp);
- ios::sync_with_stdio(0);
- for (int i = 1; i <= num; i++)
- cout << 'a';
- return 0;
- }
复制代码- cout+no_sync.exe:
- num=10000000
- n=100
- val={277,172,165,187,196,194,196,171,169,172,180,167,190,171,169,172,169,167,227,198,172,173,173,206,194,282,179,165,169,174,169,228,173,214,240,199,168,167,170,205,173,167,184,196,401,176,274,226,212,167,172,170,170,168,184,252,173,175,169,176,170,170,172,167,170,173,165,168,171,208,169,169,168,173,168,176,165,168,163,179,168,171,183,168,166,178,166,176,175,166,166,181,177,168,172,167,178,169,165,171,}
- avg=183.77
复制代码 |