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 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

Umwandeln von Active Directory Datentypen in C#

Will man Information aus dem Active Directory in einer eigenen Applikation via System.DirectoryServices abfragen, so erfordert dies für manche Daten eine spezielle Umwandlung, um sie in C# weiter verarbeiten zu können.

Um dies zu erleichtern, folgt nun ein einfaches Beispiel für die Erweiterung von DirectoryEntry via Extension Methods.

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security.Principal;
using System.DirectoryServices;

namespace ExtensionDemo
{
    public static class DirectoryEntryExtensionMethods
    {
        public static string GetPropertyOfTypeString(this DirectoryEntry directoryEntry, string propertyName)
        {
            if (directoryEntry.Properties[propertyName].Value == null)
            {
                return null;
            }

            return directoryEntry.Properties[propertyName].Value.ToString();
        }

        public static DateTime? GetPropertyOfTypeDateTime(this DirectoryEntry directoryEntry, string propertyName)
        {
            
more
Scroll to top