Groups | Search | Server Info | Login | Register
Groups > de.comp.os.unix.programming > #3002
| From | Rainer Weikusat <rweikusat@talktalk.net> |
|---|---|
| Newsgroups | de.comp.os.unix.programming |
| Subject | Re: mmap oder read? |
| Date | 2022-06-09 15:17 +0100 |
| Message-ID | <87v8t9ncod.fsf@doppelsaurus.mobileactivedefense.com> (permalink) |
| References | <t7qnab.5fg.1@stefan.msgid.phost.de> <t7si7m$1nq5k$1@gwaiyur.mb-net.net> |
Jakob Hirsch <jh.expires-20221231@plonk.de> writes:
> On 2022-06-08 17:46, Stefan Reuther wrote:
>> Was für Gründe kann es geben, sich bewusst für die eine oder die andere
>> Art zu entscheiden? Bisher bin ich - wie gesagt, Framework
>
> TLDR: Wenn man nur sequentiell liest, lohnt sich das wohl nur bei
> "großen" Dateien. Die Grenze liegt wohl irgendwo zwischen 1 und 8 MiB,
> wie man z.B. unter https://github.com/david-slatinek/c-read-vs.-mmap
> sieht (Werte sind bei mir ähnlich, hab allerdings nicht den code
> angeschaut).
Der Sinn von mmap ist zweierlei:
- es ist einfacher zu benutzen, weil man sich Speicherverwaltung
und tatsächliche I/O sparen kann
- es ermöglicht es, Dateien, auf die nur lesend zugegriffen wird
und die von potentiell vielen Prozessen benutzt werden, nur
einmal im Speicher zu haben
Letzteres betrifft vor allem Bibliothek- und Programmdateien. Es ist
kein magischer Performance-Hack. Weil per saldo alles, was man bei
open/malloc/read/close/free in der Anwendung tun müßte, auch so getan
werden muß, nur vom Kernel, ist das auch nicht zu erwarten. Im ganzen
gesehen, ist es aber (aus denselben Gründen) auch nicht 'langsamer',
lediglich fallen die Laufzeitkosten woanders an[*] (und zwar da, wo sie
naive Microbenchmarks betreffen).
[*] Ein Bespiel: Wenn man malloc benutzt, um einen Puffer anzufordern,
treten die Laufzeitkosten dafür, eine entsprechende Anzahl
Speicherseiten in den Addreßraum das Prozesses zu kriegen entweder
während malloc auf oder sie traten zu einem (programmtechnisch gesehen)
längst verganenem Zeitpunk auf. Bei mmap hat man sie beim ersten Zugriff
auf die Daten.
Back to de.comp.os.unix.programming | Previous | Next — Previous in thread | Next in thread | Find similar
mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-08 17:46 +0200
Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-08 17:27 +0100
Re: mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-09 17:52 +0200
Re: mmap oder read? Jakob Hirsch <jh.expires-20221231@plonk.de> - 2022-06-09 12:32 +0200
Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-09 15:17 +0100
Re: mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-09 17:50 +0200
Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-09 20:37 +0100
Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-10 07:30 +0200
Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-09 13:18 +0200
Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-10 09:06 +0200
Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-11 09:42 +0200
Re: mmap oder read? Jan Bruns <ebay@abnuto.de> - 2022-07-02 05:27 +0000
csiph-web