Nacherfüllung schreiben Muster

Es gibt drei Muster für hohe Leistung, die wir erwarten könnten, aber es gibt auch ein viertes Muster, über das wir aus meiner Erfahrung selten nachdenken. Und es ist dieses letzte Muster, das uns frustriert macht, manchmal genug, um unser Ziel aufzugeben. Anstatt sich darauf zu verlassen, dass der Compiler die Ausgabe in 4KB-Schreibvorgänge puffert und das Betriebssystem sich darauf verlässt, E/A-Anforderungen zusammenzuführen, könnte ich dies nicht selbst tun? Die Antwort lautet “Ja”, und ich habe mehrere Möglichkeiten, dies zu tun. Eine Möglichkeit ist einfach – ändern Sie den E/A-Teil der Anwendung. Im folgenden Code habe ich die einzelne Datenstruktur in ein Array von Strukturen geändert. Dann fülle ich das Array, verwende aber einen einzelnen fwrite()-Funktionsaufruf, nachdem das Array gefüllt wurde, um das Schreiben für mich zu erledigen. Der resultierende Code, den ich als “Array”-Code bezeichne, wird in Listing 3C angezeigt. Die Verwendung des Datenstroms als Schreibspeicher anstelle der tatsächlichen Daten zu einem zeitpunkt enden, vermeidet Aktualisierungskonflikte auf einem einzelnen Aggregat und maximiert die Leistung und Skalierbarkeit. Die Ereignisse können verwendet werden, um asynchron materialisierte Ansichten der Daten zu generieren, die zum Auffüllen des Lesespeichers verwendet werden. Dieses Histogramm kann sehr nützlich sein, wenn Sie eine Speicherlösung mit Anbietern besprechen.

Sie können ihnen das Histogramm zeigen und erklären, dass die Informationen aus einer Spur der Anwendung stammen. Dann können Sie sie bitten, dasselbe zu tun oder zumindest die gleichen Informationen für die Tests/Benchmarks bereitzustellen, die sie ausgeführt haben. Wenn die Muster ähnlich sind, dann sind ihre Tests/Benchmarks möglicherweise im Vergleich zu Ihrer Anwendung nützlich. Sie müssen auch nicht mit dem gesamten Histogramm übereinstimmen, Sie können nur Ausschnitte oder Abschnitte davon abgleichen. Sie sollten bestimmte Anwendungsmuster vermeiden, die es ermöglichen würden, dass Dokumente unbegrenzt wachsen. In einer E-Commerce-Anwendung wäre es beispielsweise schwierig abzuschätzen, wie viele Kundenbewertungen jedes Produkt erhalten könnte. Es ist auch typisch, dass nur eine Teilmenge von Bewertungen für einen Kunden angezeigt wird, wie die beliebtesten oder die neuesten Bewertungen. “In jedem Fall sind unsere Leitfragen erst der Anfang. Die Suche nach einem Hochleistungsmuster ist kein mechanischer Prozess.

Nur eine Reihe von Fragen zu beantworten, wird Ihr Muster nicht entstehen lassen. Anstatt eine Verlangsamung in den Gewinnen, die Sie machen, die Zick-Zack-Muster fühlt sich wie unsere Leistung ist tatsächlich absinken. Es ist viel besser für Sie, den Benutzer, Ihr IO-Musterwissen zu den Anbietern zu bringen und zu erklären, was Sie testen möchten. Es gibt möglicherweise Optionen für die Verwendung von Mikro-Benchmarks, um einige Aspekte Ihrer IO-Muster auf Standard-Testsystemen zu simulieren, die die Anbieter möglicherweise konfiguriert haben (vergessen Sie nicht, dass es Geld kostet, die Testsysteme zu bauen und zu betreiben).

Comments are closed.