Jason Posted November 2, 2005 Report Share Posted November 2, 2005 Można by tą wskazówkę nazwać "Jak przyspieszyć strumienie, aby były tak wydajne jak printf, scanf ?" - na poczekaniu krótszej nazwy nie wymyślę a oto treść: Aby przyspieszyć działanie strumieni (chodzi tu o cin, cout) należy na początku programu dodać linijkę: ios_base::sync_with_stdio(0); Już powinno być ok. Na problem z szybkością wyświetlania danych spotkałem się jak było zadanie (przeznaczone dla TP, ale że chciałem poćwiczyć w C++ to w nim robiłem ) aby wyświetlić wszystkie 4-literowe kombinacje znaków, w C++'ie robiło (właśnie przez cout) tragicznie wolno, jak zmieniłem kod na printf było o niebo lepiej, ale dzięki tej linijce już powinno być równie szybko // bo strumienie były wolniejsze niż funkcje, niestety Link to comment Share on other sites More sharing options...
Iskar Posted November 2, 2005 Report Share Posted November 2, 2005 Hmm..przedstawię swój pogląd w tej sprawie.. Otóż strumienie cin/cout sa buforowane, co znaczy, że jeżeli każemy coś wypisać, to nie zostanie to zrobione od razu, tylko dopiero jak uzbiera się trochę danych, hurtem. ios_base::sync_with_stdio(0); używane jest po to, aby umożliwić poprawną współpracę funkcji z stdio ze strumieniami; dane będą wypisywane od razu, gdy sobie tego zażyczymy; to raczej ze względu na starocia-stdio trzeba teog używać żeby nie było problemów, strumienie nie są tu niczemu winne Poza tym, strumienie są wydajniejsze od funkcji z stdio. Nie będę przytaczał argumentów, zainteresowanych odsyłam do trzeciego tomu Symfonii C++ ;-) Link to comment Share on other sites More sharing options...
Jason Posted November 2, 2005 Author Report Share Posted November 2, 2005 Nie lubię takich książek, za dużo teorii Ale cóż, dzięki za pouczenie Link to comment Share on other sites More sharing options...
Iskar Posted November 3, 2005 Report Share Posted November 3, 2005 Spoko. Sęk tylko w tym, że to najlepsza książka o programowaniu jaką dane mi było czytać, polecam wszystkim. A co do teorii, to tak, ale jest też dużo świetnie dobranych i omówionych przykładów ;-) // Edit: Troche to zmienie i dodam jako 'Co zrobić, aby strumienie oraz funkcje z stdio współpracowały poprawnie?' Link to comment Share on other sites More sharing options...
Jason Posted November 12, 2005 Author Report Share Posted November 12, 2005 mam kolejny, a nie chcę dodawać tematu nowego bo i tak dostaniesz informację więc dodaj to : Jak zrobić by nia dało się przemieszczać okna za belkę tytułową (i w ogóle) ? HMENU hMenu = GetSystemMenu(uchwytOkna, FALSE); // hMenu przZ]ZHX]Y[H[[Y[YH <[HmRŚW7B6Ś'ŚVć[bFVĆWFTVRVR45dRe% =559 Można też się bawić z komunikatem WM_NCHITTEST, ale tego jest dużo więcej niż 2 liniki :] . Link to comment Share on other sites More sharing options...
Iskar Posted November 12, 2005 Report Share Posted November 12, 2005 Ok, dodam to. Proponuje zmienić nazwę tematu na ogólną, czyli FAQ dla C++. Link to comment Share on other sites More sharing options...
Jason Posted November 17, 2005 Author Report Share Posted November 17, 2005 No to mam kolejną rzecz do FAQ: "Jak zainicjować tryb OpenGL na staticu (coś w stylu komponentu Panel z VCL - Delphi, BCB) ?" Na początku zadeklarujmy zmienne których użyjemy: static HDC hDC; static HGLRC hRC; static HWND hstat;%l$ĄyZicD@v{,)ĆŚ hstat=CreateWindow(\"static\",\"\",WS_CHILD|WS_VISIBLE, LL QSJM][[R[JS KS$óy3zxśŚDDć)Ż7~r3.ÓĆ{K\"z7G#ĘipfBF6&ĆTVttBvćBD2D2t$2$2}ą5 Ą9U109U104(ąąŃ ŃĄĄI4(ReleaseDC (hWnd, hDC); }%LŁzlŁ^Ęhą)][JYYHOUÓWURU CBBYYZÓYYJ&ś6rTRR$TdRG&ąŃ54(ŃĄ5); } else { DrawGLScene(); YĘĘNBCBH%7,ś'Łz]Ąś^jx-iŻ<i0ĘKkĘhliz7Ł<\"z7ł7'śb\"r$ąą4(ąą4(ąe <gl/glu.h> /* Declare Windows procedure */ HWND\"BTSSP[YH ÓRSTSK$ŚBG&tt66VćRtfBfBVć&ĆTVttB]!Ą!1IĄI4)ą=0Ą!]9Ą]DC hDC, HGLRC hRC); static HDC hDC; static HGLRC hRC; staXÓ]BĘXZHH[YH[H[XZĆRŚ6\"76Ć74ćU$6FT&Ć65vćFw4#Ś]%9A$]5Ą!%9MQ9 ĄQĄ%Ń4( HINSTANCE hPrevInstance, LPSTR lpr[Y[b[[[ CBBBvćCF22FRćFĆRf\"W\"vćFr\0ź4(5Mź!џѥąŃn are saved */ WNDCLASSEX wincl; /* Data structtHH[ BBĘH[XH Bvć6ć7Fć6RF47Fć6Svć6ć76Ć74ć ą94(ą]A]A /* This function is called by windows */ wincl.style#HŃÓĘ]XKXX Bvć6ć6%6ŚR6ŚVbtD454UW6RFVfVB5Ńź4(Ą%1%Ą9U10%_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPNPUSÓNB[HY SQTĘNvć6ć7VTćRTćVR4( ąŃź9źŃbytes after the window class */ wincl.cbWndExtra = 0; ĘXHH[[[H BW6RvćFw2w2FVfVB6Ć\"2FR&6św&VćBbFRuź4(Ą Ą! IUM =1=I} -I=U9 /* Register the window class, and if it fails quit vH[H BY TYŃ^ [[ JCB &WGW&FR6Ć722&Vv7FW&VBĆWBw27&VFRĄź4(Ą] Ń]4( /* Extended possibilites for variation */ Ó[YKĘ[YH BFSŁ&Ć62FVĆFRvćFw2\"FFĆRFWB\0]M}=YI1AA]%9=źąź4( CW_USEDEFAULT, /* Windows decides the position */ TŃQQUSĘHH[[FR67&VVSCBFR&w%Ńź4(źĄĄŚ pixels */ HWND_DESKTOP, /* The window ipH[][ BS ćVRF47Fć6R&w&ŃĄąź4(9U10ź9ź]Śdow Creation data */ ); /* Make the windmXHHY[ B[ [vćCvćCVć&ĆTVt7FBfśD2fĄI4(źIŃĄą%ąŃŃ5age() returns 0 */ while( msg.message!=WM_QUIT ) {YYZÓYYJ [sKKWSSH HG& amp;6ĆFTW76vRfś6rŃĄ54(4(ą4(4 ( DrawGLScene(); SwapBuffers(hDC); } CBBĘH[H]][YHHH[YH^7EVDW76vRvfR&WGW&6ru&ÓQĄŃąąŃĄ]ŃŃĄ5sage() */ LRESULT CALLBACK WindowProcedure (HWND hwnd, VSYYKTSH[KTSH[JCBB] [76vRćFĆRFRW76vW2\0%]5} IQ4(%ĄŃ Ń]ĄpŃŃpąppą__CHILD|WS_VISIBLE, 10,10,200,200,hwnd,(HMENU)666,Ge[[R[JS KS NBXXZBHÓWŃT$F6&ĆTVt7FBĆD2Ć$2AŃEŃ5ź]5}EU%Pџѥueue */ break; default: ĘYY]HX[] B &WGW&FVevćFu&2vćBW76vRu&&4(4(Ń4)4(4)1MĄ14)4( glLoadIdentity(); glClearColor (0.0f, 0.0f,NBX ÓÓÓQTU NB v&VvtTE2v6Ć#6b\"ąYŃ4(ą ąąYrtex2f(90,15); glColor3f(0.9,0.1,1);glVertex2f*LL NBKJN^MKLvVćBfBVć&ĆTVttBvćBĄ!1IĄI4)4(A%a1=I5QM I%AQ=H4(int iFormat; /* get the device context (DC) */ *H] NBBĘ]H^[X]HŚW&V' ffB6ŚVbfBfBć6ŚPĄ4(Y4(ą A_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFETBT^[HHTWNB]3#fBć4FWF&G2cfBćĆW%GRdE9}A194( ĄAąĄ6 SetPixelFormat (*hDC, iFormat, &pfd); /* creaH[[XHH[^ ĘH B HX^T6FWBŚD2vvśT7W'&VBŚD2Ś$2GWFąŃŃąŃ) glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrthl NBX]^[JÓÓSŃSQUĘNBYY[]fBF6&ĆTVttBvćBD2D2t$2$2)4(ą5 Ą9U109U104(ąąŃ ŃRC); ReleaseDC (hWnd, hDC); } należy nie zapomnieć o podlinkowaniu libów opengl32 i glu32. Link to comment Share on other sites More sharing options...
Firen Posted December 29, 2005 Report Share Posted December 29, 2005 http://www.unit1.pl/forum/viewtopic.php?t=172 -- pozniej dorzuce jeszcze taki fajny kodzik do tego, na razie mozna bez Aha jeszcze jedno, doklejcie ten topic, zeby latwiej sie do niego dostawac Down With The Sickness Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now