2017-12-10 2 views
2

Aus den Dokumenten weiß ich, dass Nim-Arrays eine feste Länge zur Kompilierzeit bestimmt haben, während Seqs eine variable Länge haben.Nim: Vorteil der Verwendung von Array über Seq?

Ich bemerke, dass Seqs mehr eingebaute Werkzeuge haben. Im Modul sequtils kann map beispielsweise ein Array aufnehmen, gibt aber trotzdem eine seq zurück, und all oder any funktionieren nicht mit Arrays. Und ich sehe keine einfache Möglichkeit, einen Seq mit fester Größe in ein Array zu konvertieren.

Also meine Frage ist: Was sind die Vorteile der Verwendung von Arrays? Stellen sie einen schnelleren Zugang bereit?

Antwort

6

Ein Nim seq ist in der Tat ein Zeiger auf ein dynamisches Array (das aus zwei Wörtern für die Länge und Kapazität des Seqs plus den eigentlichen Daten besteht).

Eine seq erfordert eine andere Umleitungsebene, eine zusätzliche Heap-Zuweisung und zusätzlichen Overhead (der Speicher zum Speichern von Länge und Kapazität sowie "verschwendeten" Speicher, der derzeit nicht verwendet wird). Wenn Sie genau wissen, wie viel Speicher Sie benötigen, können Sie sowohl Zeit als auch Speicherplatz sparen, indem Sie ein Array anstelle eines seq verwenden.

Verwandte Themen