Frage: Gibt es eine etablierte Prozedur oder Theorie zum Erzeugen von Code, die eine Matrix-Vektor-Multiplikation effizient anwendet, wenn die Matrix dicht ist und nur mit Nullen und Einsen gefüllt ist? Im Idealfall würde der optimierte Code systematisch auf zuvor berechnete Informationen zurückgreifen, um Doppelarbeit zu reduzieren. Mit anderen Worten, ich …
In Andrew W. Appels Buch Modern Compiler Implementation in ML sagt er unter Kapitel 17, dass die Computability-Theorie zeigen wird, dass es immer möglich sein wird, neue Optimierungstransformationen zu erfinden, und fährt fort, um zu beweisen, dass ein vollständig optimierter Compiler das Halteproblem lösen wird: Ein Programm Q , das …
Ich habe ein Array von 100.000 Zeichenfolgen, die alle die Länge . Ich möchte jede Zeichenfolge mit jeder anderen Zeichenfolge vergleichen, um festzustellen, ob sich zwei Zeichenfolgen um ein Zeichen unterscheiden. Im Moment, wenn ich jede Zeichenfolge zum Array hinzufüge, überprüfe ich sie mit jeder Zeichenfolge, die sich bereits im …
Laut der Wikipedia-Seite zu statischer Einzelzuweisung (SSA) wird SSA von großen und bekannten Projekten wie LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey und V8 verwendet, während die Seite zu Projekten im Continuation-Passing-Stil verwendet wird (CPS) ist im Vergleich etwas mangelhaft. Ich habe die Vorstellung, dass CPS von Compilern und Interpreten bevorzugt …
Ich bin mit der Idee der grundlegenden Beseitigung der Schwanzrekursion vertraut , bei der Funktionen, die das direkte Ergebnis eines Aufrufs an sich selbst zurückgeben, als iterative Schleifen umgeschrieben werden können. foo(...): # ... return foo(...) Ich verstehe auch, dass die Funktion als Sonderfall immer noch umgeschrieben werden kann, wenn …
Ich habe gelesen, dass Betriebssysteme wie Android und iOS irgendwie optimiert sind, um die Akkulaufzeit zu verbessern. Mein Verständnis ist, dass eine CPU eine bestimmte Anzahl von Operationen in einer bestimmten Zeit ausführt. Ich würde also denken, dass Sie Anwendungen beschleunigen können, indem Sie die Anzahl der erforderlichen Operationen reduzieren. …
Auf Wikipedia wird eine Implementierung für das dynamische Bottom-Up-Programmierschema für die Bearbeitungsentfernung angegeben. Es folgt nicht vollständig der Definition; innere Zellen werden folgendermaßen berechnet: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j] + 1, // a …
Die Antwort von @ Babou auf eine kürzlich gestellte Frage erinnert mich daran, dass ich einmal einen Artikel über die Äquivalenz (sowohl hinsichtlich der Fakten, die abgeleitet oder bewiesen werden können, als auch hinsichtlich der zeitlichen Komplexität der Ausführung des Inferenzalgorithmus) der Datenflussanalyse gelesen habe , abstrakte Interpretation und Typinferenz …
Die Datenflussanalyse erfolgt über ein Kontrollflussdiagramm. Wenn eine betrachtete Sprache Ausnahmen unterstützt, kann das Kontrollflussdiagramm explodieren. Was sind die Standardtechniken für den Umgang mit dieser Explosion? Können wir ausnahmsweise hervorgerufene Kanten ignorieren? Datenflussanalysen berechnen ohnehin Übernäherungen, sodass wir eine weniger genaue, aber solide Lösung erhalten würden. Ist das wahr? Update …
Für mein Science-Fair-Projekt habe ich eine Optimierung der Sortierroutine von Python implementiert . Die Idee ist, die Sicherheitsüberprüfungen, die bei jedem Vergleich durchgeführt werden müssen, z. B. Typprüfungen und Zeichenbreitenprüfungen, außerhalb der Sortierschleife zu verschieben und sie alle in einem Durchgang durchzuführen. Basierend auf den Ergebnissen der Prüfungen wird dann …
Einige Compiler verfügen über Dienstprogrammfunktionen, die kritische Kanten im Kontrollflussdiagramm aufteilen. Ich gehe davon aus, dass dies nicht als Optimierung an sich erfolgt, sondern um andere Analysen und Transformationen zu vereinfachen. In welchen Fällen wäre das Teilen kritischer Kanten sinnvoll?
Ist es möglich, einen Compiler zu entwerfen, der eine Schleife optimiert, in der auf Arrays auf alternative Weise zugegriffen wird? Zum Beispiel so: // int[] a,b int sum = 0; for(int i = 0; i < n; i++) { sum += a[i] + b[i]; } Mit dem üblichen sequentiellen Array-Speicher …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.