Article View: pl.comp.lang.c
Article #309810strtod()
From: DMR
Date: Mon, 28 Jan 2019 16:24
Date: Mon, 28 Jan 2019 16:24
17 lines
2712 bytes
2712 bytes
K... :-( Mam zassany do pamięci plik tekstowy (~3 MB), zadanie polega na tym, żeby znaleźć w tym buforze określone wartości (zmiennoprzecinkowe), przeliczyć, PODMIENIĆ (tak się szczęśliwie składa, że wynikowe sekwencje znaków są krótsze), zapisać ten blok do pliku i święto wiosny. Samo się narzuca użycie do "sparsowania" danych stworzonej do takich celów funkcji strtod(). Wszystko jasne, jak pomyślałem, tak zrobiłem - ale po odpaleniu programu... zwiecha, wentylator wyje, i7 zarżnięty na 100%... Siłowe zarżnięcie pętli na 1000 linii daje zawrotny czas wykonania programu równy prawie 2.5 sekundy. Krótsze pliki liczyły się poprawnie, ale pół sekundy na przetworzenie 200 linii... Coś tu nie gra. Kombinowałem wielorako, nawet podmieniłem to na sscanf() - to samo. W końcu coś mnie tknęło i przed parsowaniem popodmieniałem w buforze znaki za wczytywanymi wartościami zerami - wszystko ruszyło, jak trzeba! No i już widać w czym problem... Funkcja strtod() za każdym razem poprawnie zwracała endptr, więc ja się pytam - po jaką cholerę gmera ona jeszcze coś w buforze za tym znakiem? Końcowe zero nie jest jej przecież do niczego potrzebne. Przy sscanf() jeszcze jest to zrozumiałe, ale tu? No i co ja mam teraz zrobić? :-( Jest gdzieś dostępne źródło TEJ funkcji, żeby sobie nanieść poprawki? Działam na C::B + MinGW
Technical Details
Message-ID:
<9a80cb46-c718-453a-8c62-8ef4734a71e4@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!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!v55no10826107qtk.0!news-out.google.com!m21ni12790qta.0!nntp.google.com!v55no10826095qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 2002:a37:5246:: with SMTP id g67mr310734qkb.40.1548692683049; Mon, 28 Jan 2019 08:24:43 -0800 (PST) X-Received: by 2002:a5b:98a:: with SMTP id c10mr4777ybq.0.1548692682848; Mon, 28 Jan 2019 08:24:42 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!v55no10826107qtk.0!news-out.google.com!m21ni12790qta.0!nntp.google.com!v55no10826095qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Mon, 28 Jan 2019 08:24:42 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=80.238.104.22; posting-account=FE4hoAoAAADKg8EtnA4bEyQiJf7iqAgV NNTP-Posting-Host: 80.238.104.22 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <9a80cb46-c718-453a-8c62-8ef4734a71e4@googlegroups.com> Subject: strtod() From: DMR <mezzogm@gmail.com> Injection-Date: Mon, 28 Jan 2019 16:24:43 +0000 X-Received-Bytes: 2891 X-Received-Body-CRC: 1968493829 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit