ganze ganz große arrays:P



  • Hallo alle zusammen.

    wollte mal fragen, ob es irgend eine lib oder sonstige Möglichkeiten gibt ganz große arrays anzulegen,
    wie z.B:

    int heino[238479385723895];

    wäre echt super, wenn mir jemand weiterhelfen kann.



  • wo zu? Wenns auf den Heap passt, dann mit new int[888888];



  • Ich sehe da eher ein Speicherproblem; wo sollte man das Array speichern? auf dem Stack? Heap? Auf beiden ist zu wenig Platz.
    Du könntest dir aber selber eine Klasse schreiben die das Array auf der Festplatte ablegt. Das wäre zwar langsamer, aber müsste bei den heutigen Größen(>250GB) kein Problem sein.
    EDIT: Ok... doch:

    867 TiByte

    Wozu brauchst du denn so ein großes Array?

    Don06



  • Klar, was sind heute schon 867TiByte? Ist ja nix legs nur an.



  • alexx_h schrieb:

    Hallo alle zusammen.

    wollte mal fragen, ob es irgend eine lib oder sonstige Möglichkeiten gibt ganz große arrays anzulegen,
    wie z.B:

    int heino[238479385723895];

    wäre echt super, wenn mir jemand weiterhelfen kann.

    Das passt schon mal meistens NICHT in den Stack. Also kannst du es auf jeden Fall mit new probieren (somit auf dem Heap) bzw. gleich std::vector!!!

    238479385723895 ints ist aber ganz schön viel. 😃

    Bei solchen Dimensionen kommt man um VirtualMemory (auslagerung auf Festplatte) nicht umhin. Unter Windows gibts dafür spezielle WinAPI-Funktionen. Unter Linux/Unix sicherlich auch.



  • super, vielen Dank für eure schnellen Antworten.

    ich werd das mal mit new int[] probieren.

    Wozu ich das brauche ist eig unwesentlich, aber ich will daraus mal kein Geheimnis machen: ich berechne gerade ziemlich große Primzahlen.



  • Na dann geht dein Prozessor ja noch vor deiner Festplatte in die Knie 🙂

    :p



  • alexx_h schrieb:

    super, vielen Dank für eure schnellen Antworten.

    ich werd das mal mit new int[] probieren.

    Wozu ich das brauche ist eig unwesentlich, aber ich will daraus mal kein Geheimnis machen: ich berechne gerade ziemlich große Primzahlen.

    doch, es ist wesentlich.
    beim primzahlenrechnen kannste absolut nicht gebrauchen, daß die daten auf der platte liegen, die sind da 10 Mio mal langsamer als im ram. und auf dem heap mit new int[] kommste ans ganze ram (oder 2G oder was dein bs dir erlaubt für einen user-prozess) benutzen.



  • naja hol dir ein Raid system mit paar paraller datenübertragung.. das ist schneller und Lohnt sich bestimmt für diene Primzahlenberechnung;)


Anmelden zum Antworten