Gepostet: |
Laziness, Memory Problem | ||||||||||
Hallo, folgendes Programm soll eine Liste vom Bäumen entgegennehmen und diese in Int-Bäume umwandeln. Bäume die umgewandelt werden sollen, werden analysiert, den z.B. auftretenden Char-Zeichen wird eindeutig ein Int zugewiesen und damit werden alle Bäume transformiert. Bsp: [Node 'a' [Node 'b' []] ,Node 'a' []] -- > [Node 1 [Node 2 []],Node 1 []]
Mein Problem: - für (intifiy trees) !! 100000 wird viel mehr maximaler Speicher verbraucht als für (intifiy trees) !! 0 - weshalb? - Ich dachte, dass aufgrund der Laziness einmal die 99999 ersten Bäume nicht transfomiert werdne, da sie nicht gebraucht werden, und zumanderen beim Durchgehen der Liste die nicht gebrauchten Elemente (Bäume) direkt verworfen werden und sich nur gemerkt wird, an welcher Stelle der Liste ist; d.h. für diese wird kein Speicher gebraucht. Deswegen habe ich eigentlich mit gleichem Speicherverbrauch gerechnet. - Ähnlich wie zu [1..] !! 100000 und [1..] !! 0 - hier ist es ja so. Wo liegt mein Verständnisfehler bzw. was ist noch nicht richtig? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Keine Ahnung woher das kommt, aber ich würde das Problem anders angehen: Ich würde versuchen, innerhalb von intify eine Map und den nächsten freien Index in eine State-Monade zu packen und damit den aktuellen Index zu ermitteln (und gegebenenfalls zu updaten). Ich habe gerade keine Zeit, da bräuchte ich sicher länger zum Tüfteln. | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Danke für deine schnelle Anregung, eventuell werde ich das später noch probieren. Wenn ich herausfinde, weshalb mehr Speicher verbraucht werde ich es auch noch schreiben - eigentlich schade, wenn es nicht geht, es wäre doch schön wenn es ginge die Laziness so zu nutzen. | |||||||||||
Zum Seitenanfang | |||||||||||