-1
4자를 포함하는 char 포인터를 반환하는 함수가 있습니다.많은 양의 문자열을 stdout으로 보내는 가장 좋은 방법은 무엇입니까?
char *foo(unsigned short n)
{
return "abc\n";
}
이제 100,000 번 실행하고 결과를 stdout으로 보냅니다. 그리고 그것은 가능한 가장 빠른 방법으로 수행되어야합니다.
이 함수를 쓰지 않고 10000 번 실행하면 약 0.45 초가 걸립니다.
나는 시도했다 :
-
- 에 fwrite
,369... fwrite(foo(n), 4, 1, stdout); ...
~6.5s
...
printf("%s", foo(n));
...
PRINTF
~9.9s
- 함수 역시 버퍼링하고 빠르게 만들 수있는 방법이 있나요
char buffer[400001] = "";
...
strncat(buffer, foo(n), 4);
...
fwrite(buffer, 400000, 1, stdout);
~7s
에 fwrite? 적어도 5 세 이하는 가고 싶습니다.
당신은 puts() (라인 당) 또는 puch()가있는 사이클을 잊어 버렸습니다 ... –
프로그램을 시간을 잰다면 * 실제로 * CPU 시간이 몇 밀리 초 밖에 걸리지 않을 수도 있습니다. 나머지는 모두 출력 터미널이 텍스트를 처리하는 속도 때문입니다. 왜 화면에 많은 양의 데이터를 인쇄해야합니까? 빨리 읽을 수는 없지, 그렇지? – usr2564301
나는 그 숫자를 믿지 않는다. 좀 더 실제적인 측정 값을 얻으려면'./a.out>/tmp/out.txt'로 실행하십시오 (또는'/ dev/null'로 먼저 리다이렉트). –