[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Laaangsom snprintf()



"Egon Andersen, Talura" wrote:
> 
> Morten Sylvest Olsen wrote:
> >
> > Egon Andersen, Talura <sslug@sslug> wrote:
> > : Hej,
> >
> > : Jeg har et problem med hastigheden af snprintf().
> >
> > : I et real-tids program har jeg et sted følgende program linie:
> >
> > : length = snprintf(tmpbuf, bufsize, "%-.*LE", fractional_digits,
> > : RealValue);
> >
> > : Ovenstående linie overskygger simpelthen alt andet i programmet, mht.
> > : tidsforbrug og der foregår faktisk ganske meget andet!
> >
> > : Jeg har mål forbruget til ca. 20000 clock-cykler, hvilket jeg synes er
> > : ekstremt meget.
> >
> > Hmm, måske, måske ikke. Men tilsyneladende er det et 128bit long double floating point
> > tal du skriver ud? Det har nok en stor andel af skylden. Hvis der skal
> > laves en rigtig effektiv udskriving kunne du måske hacke noget sammen
> > vha. nogle multimedia SIMD instruktioner. Det er jo lidt afhængig hvilken
> > processor der sidder på dit (indlejrede??) system. Hvis 20000 clockcykler
> > er et problem så burde du måske bruge fixed-point arithmetic, men det
> > afhænger self. af hvad du gør med tallene.
> >
> > Jeg kender ikke lige på stående fod algoritmer smartere end divide/modulus
> > methoden.
> >
> > Mvh Morten
> > --
> Nu er det på en Athlon, så long double er 80 bit.
> Du er dog måske inde på noget af det endnu mere besynderlige, nemlig det
> at hvis jeg type-cast'er til double og fjerner 'L', så går det 21 gange
> hurtigere!!!

Uups, jeg var vist ikke helt opmærksom på, at der var overflow da jeg
skiftede til double og dermed fik INF og at det altså kan skrives 21
gange hurtigere end det korrekte decimaltal.
Hvis jeg anvender tal der er gyldige i både double og long double, sker
konverteringen stort set lige hurtigt eller rettere langsomt. Så jeg
leder altså stadig efter noget det kan speede det noget op.

/Egon
-- 
* Talura ApS      * Phone: +45 43 52 50 00 *
* Baldershøj 24 B * mailto:sslug@sslug  *
* DK-2635  Ishøj  * http://www.talura.dk   *


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:09 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *