2011-09-13 22 views
8

Zauważyłem to podczas używania kilku różnych języków w systemach Windows XP, Vista i 7. Jeśli zrzucisz kilka tysięcy linii na sekundę do okna konsoli, ma to ogólnie negatywny wpływ na wydajność systemu. Komputer jest szybki i zawsze szybszy, a konsola wygląda jak zwykły tekst na zapleczu. Gdzie jest szyjka butelki?Dlaczego dane wyjściowe konsoli są zbyt wolne?

+0

Myślę, że odpowiedziałeś na własne pytanie ... –

+0

Na jakiej platformie obserwujesz to zachowanie. Windows, Unix, Mac. . .? –

+0

To jest uczciwe pytanie, z punktu widzenia, że ​​wiedząc, dlaczego aktualizacja okna tekstowego jest powolna może zapewnić wgląd w to, czy jest coś, co można zrobić, aby złagodzić problem, takie jak dołączenie strumienia wyjściowego konsoli do jakiejś niestandardowej logiki aktualizacji okna. – supercat

Odpowiedz

3

printf etc musi przejść od procesu z jakimś IPC do procesu oknie konsoli (Csrss lub conhost) Konsola może być również wspólnie z kilku procesów, więc nie jest również pewne synchronizacja i buforowanie dzieje.

+0

Podążam za tym, co mówisz w swojej odpowiedzi. Czy masz więcej szczegółów, które możesz podać? – QueueHammer

+0

@QueueHammer Implementacja systemu Windows jest nieudokumentowana i używa LPC (http://j00ru.vexillium.org/?p=527) WINE dostarcza również użytecznych informacji (https://www.winehq.org/docs/winedev-guide/ x3423). Dla zabawy uruchom "cmd.exe/C dir/S/B c: \" i zobacz, jak csrss używa 50% procesora w jednym rdzeniu systemu 2000/XP ... – Anders

Powiązane problemy