🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Dlaczego ten test nie działa

#309669
From: bartekltg
Date: Thu, 12 Apr 2018 13:42
78 lines
4319 bytes
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;
} 


pzdr
bartekltg
Technical Details
Message-ID: <28f03fe8-2266-4732-97e1-a59291320a22@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!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!s52no1778928qtc.0!news-out.google.com!e12ni3150qtp.1!nntp.google.com!s52no1778903qtc.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>

Show Full Headers
Complete Article Headers
X-Received: by 10.55.73.149 with SMTP id w143mr696023qka.12.1523540532003;        Thu, 12 Apr 2018 06:42:12 -0700 (PDT)
X-Received: by 10.31.52.139 with SMTP id b133mr99794vka.10.1523540531360; Thu, 12 Apr 2018 06:42:11 -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!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!s52no1778928qtc.0!news-out.google.com!e12ni3150qtp.1!nntp.google.com!s52no1778903qtc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Thu, 12 Apr 2018 06:42:11 -0700 (PDT)
In-Reply-To: <a6c0bdb8-b0e7-4628-a7d6-bf79907261a2@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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <28f03fe8-2266-4732-97e1-a59291320a22@googlegroups.com>
Subject: Re: Dlaczego ten test nie działa
From: bartekltg <bartekltg@gmail.com>
Injection-Date: Thu, 12 Apr 2018 13:42:11 +0000
Lines: 88
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit