Frage

Ich muss Software schreiben, die viel Mathematik ausübt. Meistens wird es eine Matrixmultiplikation mit Ganzzahlen sein, um DCT zu berechnen. Wie viel schneller sollte ich erwarten, dass der Code in nativem C im Vergleich zu VB .NET ausgeführt wird? Faktor 2, Faktor 10, Faktor von 1000 ...? Hat jemand versucht und Statistiken dazu gesammelt?

War es hilfreich?

Lösung

Sie können ein neues Bildattribut slideshow_image an das Set des Produktattributs hinzufügen. Dieser Beitrag auf Pixafy erklärt, wie.Auf diese Weise können Sie alle Bilder für die Produkt-Collection-Slidehow mit der Suche nach den Bildern im Attribut slideshow_image abrufen.

Andere Tipps

Der .NET-Code ist vor der Ausführung mit dem nativen Code mit einem nativen Code kompiliert, sodass er im Allgemeinen nicht langsamer sein sollte als der native Code. Ich würde einen Faktor <10 erwarten.

Darüber hinaus profilieren adaptive Optimierungstechniken den Code beim Ausführen und gewinnen mehr Informationen als ein typischer statischer Compiler. Daher kann die JIT fundiertere Entscheidungen für weitere Optimierungen treffen

VB ist 93,7% so schnell wie C. Wenn Sie wählen das richtige Szenario aus.

Wenn Ihr natives C -C -C -C -C -C -C -C -C -Kreis regelmäßig an malloc () und Free () um sie herum kreise. GC kann 10x schneller sein als Mallocs in Ihren inneren Schleifen.

Wenn Sie C zusammenbrechen und C verwenden, versuchen Sie, Strukturen wiederzuverwenden, die Sie nur einmal deklariert haben, anstatt neue zu machen, um dieses Problem zu vermeiden. Dies kann auch in VB von Vorteil sein, wenn sich Ihre Lösung dafür eignet. Es wird jedoch schwieriger zu programmieren und GC ist sehr schnell.

Was die Grenzen/Überlaufprüfungen betrifft, wenn die Geschwindigkeit wichtig ist und das Testen ergeben hat, dass sie nicht auftreten und Sie kein Leben oder Millionen von einem Fehler oder Abbruch riskieren, sind sie Zeitverschwendung. Wenn Sie sie jedoch nicht loswerden können, ist Ihre Zeit in einer Sprache, mit der Sie schneller programmieren können, wahrscheinlich noch wertvoller.

Wenn Sie eine ernsthafte Größe und Verwendung erwarten, wird die Aufgabe mit einem Steuerungsprogramm aufgeteilt und die zugewiesenen "Aufgabendefinitionen" in ein gemeinsam genutztes Verzeichnis mit einer Datei pro Tasklöser oder einer Datenbank gespeichert. Anschließend können Sie einen Löser pro Prozessor (2 pro HT -CPU) oder Netzwerkcomputer ausführen. Seien Sie müde von Warteschlangenstrukturen-es ist schwierig, atomisch zu "markiert und zu den Daten- oder Nicht-Taken". Sie wissen, wie viele Aufgabenlöser Sie beginnen werden. Ich habe dies mit einem Bildgebungsunternehmen gemacht, das ich entwickelte, es war viel einfacher als erwartet und es hat die vorherige Version cremig. Plus, wenn Sie mehrere verwenden Prozesse Mit einer ordnungsgemäß abgelehnten Problemdomäne vermeiden Sie die leicht zu signifikante Programmierbelastung durch Multithreading. Oder überzeugen Sie Ihre Mitarbeiter, dass Ihre Culrly -Zahnspangen am richtigen Ort sind. Frieden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top