.NET News

In den letzten Tagen gab es einige sehr interessant Neuigkeiten zu den verschiedensten .NET Themen. Hier ein kleine Auflistung:

more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 4 – RingBuffer

Nachdem ich schon Datentypen/Klassen wie das Array, die LinkedList und ConcurrentQueue etwas näher beleuchtet habe, komme ich nun zum letzten Typen. Einer speziellen C# Implementierung eines Ring-Puffers.

Wer will kann die Problemstellung, den groben Testaufbau und die Auswirkung der verschiedenen Typen gerne nochmal in Teil 1, 2 und 3 nachverfolgen.

Das beste Ergebnis konnte ich bisher mit der ConcurrentQueue erreichen.
Dabei habe ich mit 10 Millionen Einträge vom Typ double, bei einer Frequenz von 2 Millionen neuen Daten pro Sekunde, getestet. Wie sich aber gezeigt hat, scheint der Garbage Collector doch einen nicht zu vernachlässigenden … more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 3 – ConcurrentQueue

Im letzten Teil konnte ich mit Hilfe einer LinkedList bereits eine erhebliche Performanceverbesserung für das zyklische hinzufügen von Daten innerhalb eines fest definierten Zeitraums erzielen.

In diesem Teil will ich herausfinden, ob ich durch die Verwendung einer ConcurrentQueue das Ergebnis noch verbessern kann.

Den letzten Test mit der LinkedList habe ich mit einer Gesamtgröße von 5000000 Einträgen und 50000 neuen Einträgen pro 50 Millisekunden (bzw. 1000000 pro Sekunde) durchgeführt. Daher werde ich die ConcurrentQueue zunächst mit den gleichen Werten testen.

Im Vergleich scheint die ConcurrentQueue keine Verbesserungen zu bringen. Aber der Schein trügt. Werfen wir doch … more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 2 – LinkedList

Auf der Suche nach einem performanten Datentypen für das zyklische Hinzufügen möglichst vieler Datensätze innerhalb eines möglichst kleinen Zeitfensters, hatte ich im ersten Teil ein einfaches Array getestet

Dabei gilt es einen Datentyp zu finden der es erlaubt, einem Pool an Daten mit fester Größe, innerhalb eines Zeitfensters von 50 ms, möglichst viele neue Daten hinzuzufügen.
In der nachfolgenden Animation sind die neue Daten grün, und die zu löschenden Daten rot dargestellt.
Die Größe des Pools ergibt sich aus der Summe des blauen und grünen Bereichs.

Beim gewöhnlichen verwenden des Arrays musste ich intern die Daten … more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 1 – Array

Vor gar nicht allzu langer Zeit habe ich mit dem Vergleich einiger C# Lösungen zur Echtzeitanzeige von Daten innerhalb eines festen Zeitfensters befasst. Dabei wurde davon ausgegangen, dass dem Zeitfenster neue Daten mit einer konstanten Frequenz hinzugefügt wurden und auch die Gesamtanzahl der darzustellenden Daten gleich bleibt.

Um die Grenzen der zu testenden Systeme beurteilen zu können, ging es dabei also letztendlich um zwei wesentliche Fragen.

  1. Wie wirkt sich die Gesamtanzahl der darzustellenden Datensätze pro Sekunde aus.
  2. Welchen Einfluss hat die Änderungsrate. Also die Anzahl der neuen Datensätze pro Sekunde.

Die Daten (in meinem Fall vom … more

Scroll to top