Article View: pl.comp.lang.asm
Article #2601Re: [1/3 NTG] C - Optymalizacje wstawkami
From: Bogdan (bogdro)
Date: Sun, 17 Feb 2019 15:24
Date: Sun, 17 Feb 2019 15:24
178 lines
5248 bytes
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-mailReferences:
<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