Groups | Search | Server Info | Login | Register


Groups > de.comp.os.unix.programming > #3002

Re: mmap oder read?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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