From: Piotr Wyderski <peter.pan@neverland.mil> Newsgroups: pl.comp.lang.c Subject: Re: Szybkie itoa - praktyka Date: Tue, 20 Sep 2011 19:46:52 +0200 [...]Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!not-for-mail Organization: CI TASK http://www.task.gda.pl/ Lines: 27 Message-ID: <j5aji9$oe4$1@news.task.gda.pl> References: <j55kbe$sqt$1@news.onet.pl> <j5a9gk$vk8$1@news.onet.pl> <j5ab83$7cc$1@news.onet.pl> NNTP-Posting-Host: h82-143-146-166-static.e-wro.net.pl Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.task.gda.pl 1316540809 25028 82.143.146.166 (20 Sep 2011 17:46:49 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Tue, 20 Sep 2011 17:46:49 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20110902 Thunderbird/6.0.2 In-Reply-To: <j5ab83$7cc$1@news.onet.pl> Xref: news-archive.icm.edu.pl pl.comp.lang.c:296238
bartekltg wrote: > Nadal ma podstawową wadę, czyli zapisujemy liczbę od końca > i trzeba ją odwrócić. Dlatego najlepsze konwertery wykonują wstępne dzielenie przez 10^8 (poprzez mnożenie przez odpowiednie stałe magiczne) i następnie dzielą uzyskane fragmenty przez 10^4, 10^2 i 10^1. Wynik konwersji powstaje równolegle i przy dostatecznie dużym rejestrze tymczasowym jest dostępny cały od razu. Tak robi mój konwerter 64-bit -> ASCII oparty na SSE. Wtedy masz problem zer wiodących, ale na to też są odpowiednie sztuczki. > Dość niepewnym pomysłem jest zapisywać liczbę od końca bufora > (musimy znać jego długość), a zwrócić nie wskaźnik do bufora, > ale do pierwszej liczby A co w tym złego? :-D > (ale to raczej proszenie się o kłopoty, ktoś może zapomnieć > i np spróbować zwolnić pamięć z takiego wyniku;) "Mama mówiła: <<poznasz głupiego po czynach jego>>", jak powiedział Forrest Gump :-) Pozdrawiam, Piotr Wyderski