🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309670

Re: Dlaczego ten test nie działa

#309670
From: bartekltg
Date: Thu, 12 Apr 2018 13:46
86 lines
4888 bytes
On Thursday, April 12, 2018 at 3:42:13 PM UTC+2, bartekltg wrote:
> On Thursday, April 12, 2018 at 9:56:05 AM UTC+2, Maciek wrote:
> > W dniu środa, 11 kwietnia 2018 21:53:29 UTC+2 użytkownik Wojciech Muła napisał:
> > > On Wednesday, April 11, 2018 at 6:50:09 PM UTC+2, Maciek wrote:
> > > > Cześć. Chciałem zapytać dlaczego poniższy test nie działa:
> > > > 
> > > > std::cout<<((double)(c_after - c_before)/CLOCKS_PER_SEC>=1.0)<<" \r";
> > > > 
> > > > Chodzi o to e chce coś zrobić kiedy ten test będzie true c_after - c_before mają wynik funkcji clock().
> > > > 
> > > > To tyle w dużym skrócie. Dzięki cześć.
> > > 
> > > Wyrażenie wygląda OK, wyświetl sobie c_after oraz c_before
> > > i zobacz co tam masz.
> > > 
> > > BTW skoro używasz C++, to zainteresuj się nagłówkiem chrono,
> > > bardzo porządnie zrobiony -- http://en.cppreference.com/w/cpp/header/chrono.
> > > 
> > > w.
> > 
> > To jesteś mi w stanie wytumaczyć dlaczego poniższa funkcja nie działa:
> > 
> >             unsigned int a=0, b=0, c=0, d=0, result=0;
> >             unsigned int op_per_sec;
> >             std::clock_t c_before, c_after=0;
> >             c_before=std::clock();
> >             std::vector<unsigned int> vec(1000000);
> >             for(unsigned int i=0; i<100000000; ++i) {
> >                 result = a+b+c+d;
> >                 ++op_per_sec;
> >                 c_after = std::clock();
> >                 if((double(c_after - c_before)/CLOCKS_PER_SEC)>=1.0)
> >                 std::cout<<"IN FUNCTION "<<__func__<<"OP PER SEC IS : "<<op_per_sec<<"    \r";
> >                 std::cout.flush();
> >                 c_before = std::clock();
> >                 op_per_sec = 0;
> >             }
> >         }
> > 
> > konkretnie linia                 std::cout<<"IN FUNCTION "<<__func__<<"OP PER SEC IS : "<<op_per_sec<<"    \r";
> > 
> > nic mi nie wypisuje.
> 
> Popatrz na ten program dobrze. Nadmiar pythona;p
> 
> >                 std::cout.flush();
> >                 c_before = std::clock();
> >                 op_per_sec = 0;
> 
> robisz w _każdej_ pętli, więc c_before zawsze
> jest aktualne, ma wartość z poprzedniej pętli,
> mierzysz więc czas wykonania pojedyńczej pętli, nie
> od początku/od resetu.
> 
> Wstaw klamerki
> 
> unsigned int bar(){
>     uint64_t  a=0, b=0, c=0, d=0, result=0;
>     uint64_t  op_per_sec;
>     std::clock_t c_before, c_after=0;
>     c_before=std::clock();
>     std::vector<unsigned int> vec(1000000);
>     for(uint64_t i=0; i<1000000000000llu; ++i) {
>         result = a+b+c+d;
>         ++op_per_sec;
>         c_after = std::clock();
>         if((double(c_after - c_before)/CLOCKS_PER_SEC)>=1.0){
>             std::cout<<"IN FUNCTION "<<__func__<<"OP PER SEC IS : "<<op_per_sec<<"    \r";
>             std::cout.flush();
>             c_before = std::clock();
>             op_per_sec = 0;
>         }
>     }
>     return result;
> } 
> 


BTW, jeśli chesz w ten sposób mierzyć wydajność, to to jest
kiespki pomysł, bo patrzenie na zegar i porównywanie zajmuje
więcej czasu niż właściwe operacje. 
Zadań blok operacji (możesz w trakcie dobierać jego wielkość)
i mierz czas w jakim wykona się k operacji. 

pzdr
bartekltg
Technical Details
Message-ID: <d1020644-6938-4bc2-8920-24f0ddc5201c@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!s52no1784516qtc.0!news-out.google.com!e12ni3150qtp.1!nntp.google.com!s52no1784507qtc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <11e93e39-69fc-4ee2-8886-9d077c8026fb@googlegroups.com> <2750bf86-40ef-4907-90fd-89e8542c0183@googlegroups.com> <a6c0bdb8-b0e7-4628-a7d6-bf79907261a2@googlegroups.com> <28f03fe8-2266-4732-97e1-a59291320a22@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.237.60.85 with SMTP id u21mr645824qte.58.1523540762103;        Thu, 12 Apr 2018 06:46:02 -0700 (PDT)
X-Received: by 10.31.193.140 with SMTP id r134mr101418vkf.6.1523540761844; Thu, 12 Apr 2018 06:46:01 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!s52no1784516qtc.0!news-out.google.com!e12ni3150qtp.1!nntp.google.com!s52no1784507qtc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Thu, 12 Apr 2018 06:46:01 -0700 (PDT)
In-Reply-To: <28f03fe8-2266-4732-97e1-a59291320a22@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.70.113.215; posting-account=CvUQzQoAAABvVQmR58QmR6N4Cev1qhAS
NNTP-Posting-Host: 89.70.113.215
References: <11e93e39-69fc-4ee2-8886-9d077c8026fb@googlegroups.com> <2750bf86-40ef-4907-90fd-89e8542c0183@googlegroups.com> <a6c0bdb8-b0e7-4628-a7d6-bf79907261a2@googlegroups.com> <28f03fe8-2266-4732-97e1-a59291320a22@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d1020644-6938-4bc2-8920-24f0ddc5201c@googlegroups.com>
Subject: Re: Dlaczego ten test nie działa
From: bartekltg <bartekltg@gmail.com>
Injection-Date: Thu, 12 Apr 2018 13:46:02 +0000
X-Received-Bytes: 5159
X-Received-Body-CRC: 1311655739
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit