Ich arbeite derzeit an einem Projekt mit dem Modul vcache-trie. Ich versuche, die Ausführungsgeschwindigkeit einer Forschung innerhalb des Trie mit der lookupPrefix
Funktion zu testen.Erstellen Sie eine NFData-Instanz für Trie
Dies ist ein Benchmark mit Kriterium für diesen Zweck erstellt:
bench "trieSearch" $ nf (lookupPrefix (pack "ab")) trie
wo trie in einer Umgebung für Kriterium erstellt wird. Der Typ dieses Trie ist Trie Int
.
Da die Umgebung in Normalform ausgewertet wird, muss ich eine Instanz von NFData für diesen speziellen Typ erstellen.
Der Inhalt des Trie für diesen speziellen Fall ist [(ByteString, Int)], ich nehme an, die Instanz von NFData sollte jedes Tupel auswerten, aber ich bin nicht sicher, wie es weitergeht.
Jede Hilfe wäre sehr dankbar, danke, dass Sie sich die Zeit genommen haben, mein Problem zu lesen.
Vielen Dank für Ihre Antwort, es ist mit der Arbeits Problemumgehung. Ich werde den Betreuer wie vorgeschlagen kontaktieren. – Barbrousse
@Barbrousse, ich bin mir nicht sicher, ob eine 'NFData'-Instanz wirklich das bekommt, was Sie in diesem Fall wollen. Aus der Dokumentation: "Die Hauptmotivation für VRefs ist es, speichergespeicherte Werte zu unterstützen, d. H. Sehr große Datenstrukturen, die nicht auf einmal im RAM gespeichert werden sollten." Ich denke nicht, dass es sehr wahrscheinlich ist, dass Sie in der Lage sind, einen wirklich sinnvollen Eindruck von der Leistung einer Operation zu bekommen, indem Sie ein 'deepseq' auf das Ergebnis anwenden. Das heißt, das Paket sollte sowieso eine 'NFData'-Instanz anbieten. – dfeuer
@dfeuer Danke für Ihre Antwort, haben Sie eine Idee von einem genaueren Test, der für diesen Fall erstellt werden könnte? – Barbrousse