🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2601

Re: [1/3 NTG] C - Optymalizacje wstawkami

#2601
From: Bogdan (bogdro)
Date: Sun, 17 Feb 2019 15:24
178 lines
5248 bytes
W dniu 13.02.2019 o 19:12, DMR pisze:
> Poleciałem trochę po łebkach, a zapomnialem, że taki bufor z danymi można sobie łatwo sprokurować:
> 
> 
> //------------------------------------------------------------------------------
> #include <stdio.h>
> #include <stdlib.h>
> //------------------------------------------------------------------------------
> int main()
> {
> char *cBuffer;
> char *endptr;
> int nSize, nIterations, i;
> volatile double fValue;
> 
>     nSize = 8000000;
>     nIterations = 1000;
> 
> 
>     cBuffer = (char*)malloc(nSize + 1);
> 
>     cBuffer[nSize] = '\0';    // robimy sobie dane, zero na końcu
>     sprintf(cBuffer, "%0.10f", 3.14159265358979); // Pi do 10 cyfr
>     for (i = 12; i < nSize; i++)    // osiem mega 'A'... ;-)
>       cBuffer[i] = 'A';
> 
>     // cBuffer[12] = '\0';  
> 
>     for (i = 0; i < nIterations; i++)    // no i jazda...
>         fValue = strtod(cBuffer, &endptr);
> 
>     printf("%0.10f", fValue);
> 
> 
>     free(cBuffer);
> 
> 
>     return 0;
> }
> //------------------------------------------------------------------------------
> 
> 
> Wyłączenie/włączenie linijki przed pętlą zmienia czas wykonania z milisekund na długie sekundy...

[...]

Z ciekawości sprawdziłem.

Linijka zakomentowana (czyli parsuje cały bufor), bez -O:


$ time ./strtodtest
3.1415926536
real    0m0,032s
user    0m0,028s
sys     0m0,004s

$ time ./strtodtest
3.1415926536
real    0m0,033s
user    0m0,025s
sys     0m0,008s

$ time ./strtodtest
3.1415926536
real    0m0,033s
user    0m0,029s
sys     0m0,004s


Linijka zakomentowana, -O1:

$ time ./strtodtest
3.1415926536
real    0m0,010s
user    0m0,003s
sys     0m0,006s

$ time ./strtodtest
3.1415926536
real    0m0,010s
user    0m0,006s
sys     0m0,004s

$ time ./strtodtest
3.1415926536
real    0m0,009s
user    0m0,002s
sys     0m0,007s


Linijka zakomentowana, -O2:

$ time ./strtodtest
3.1415926536
real    0m0,009s
user    0m0,002s
sys     0m0,007s

$ time ./strtodtest
3.1415926536
real    0m0,009s
user    0m0,006s
sys     0m0,003s

$ time ./strtodtest
3.1415926536
real    0m0,009s
user    0m0,004s
sys     0m0,005s


Linijka zakomentowana, -O3:

$ time ./strtodtest
3.1415926536
real    0m0,006s
user    0m0,001s
sys     0m0,005s

$ time ./strtodtest
3.1415926536
real    0m0,006s
user    0m0,001s
sys     0m0,005s

$ time ./strtodtest
3.1415926536
real    0m0,006s
user    0m0,001s
sys     0m0,005s


Linijka odkomentowana, -O3:


$ time ./strtodtest
3.1415926536
real    0m0,007s
user    0m0,001s
sys     0m0,005s

$ time ./strtodtest
3.1415926536
real    0m0,007s
user    0m0,000s
sys     0m0,007s

$ time ./strtodtest
3.1415926536
real    0m0,007s
user    0m0,003s
sys     0m0,004s


 Także u mnie nie obserwuję "efektu sekund". Pewnie problem z glibc
(tak, zdarzają się takie).

$ gcc --version
gcc (GCC) 7.4.0 20181206 (OpenMandriva)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

$ rpm -q glibc
glibc-2.27-9-omv2015.0.x86_64

$ uname -a
Linux syriusz 4.16.13-desktop-1omv #1 SMP Wed May 30 21:45:03 UTC 2018
x86_64 x86_64 x86_64 GNU/Linux


-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):            http://bogdro.evai.pl
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org  Soft(EN): http://bogdro.evai.pl/soft
Technical Details
Message-ID: <5c697caa$0$476$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <30292520-12bd-49f0-b5ce-39c9af378a4c@googlegroups.com> <5c5b41d7$0$501$65785112@news.neostrada.pl> <781a3ad8-10bb-42aa-939f-dc6c11efa783@googlegroups.com> <5c5df439$0$476$65785112@news.neostrada.pl> <5e988bac-236b-42c4-8f94-87c5586d58d1@googlegroups.com> <5c632cc2$0$492$65785112@news.neostrada.pl> <17dc9fb7-38b2-4278-a1fc-d7b9c4746e70@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: [1/3 NTG] C - Optymalizacje wstawkami
Newsgroups: pl.comp.lang.asm
References: <30292520-12bd-49f0-b5ce-39c9af378a4c@googlegroups.com> <5c5b41d7$0$501$65785112@news.neostrada.pl> <781a3ad8-10bb-42aa-939f-dc6c11efa783@googlegroups.com> <5c5df439$0$476$65785112@news.neostrada.pl> <5e988bac-236b-42c4-8f94-87c5586d58d1@googlegroups.com> <5c632cc2$0$492$65785112@news.neostrada.pl> <17dc9fb7-38b2-4278-a1fc-d7b9c4746e70@googlegroups.com>
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
Openpgp: preference=signencrypt
Date: Sun, 17 Feb 2019 16:24:26 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <17dc9fb7-38b2-4278-a1fc-d7b9c4746e70@googlegroups.com>
Lines: 178
Message-ID: <5c697caa$0$476$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89.64.39.243
X-Trace: 1550417066 unt-rea-a-01.news.neostrada.pl 476 89.64.39.243:61892
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 5073
X-Received-Body-CRC: 496813637
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit