ShardedCounter 1.0.0

Simplistic, atomic, interlocked counter that allows for huge numbers of operations to be performed using a "sharding" style approach to summation.

Install-Package ShardedCounter -Version 1.0.0
dotnet add package ShardedCounter --version 1.0.0
<PackageReference Include="ShardedCounter" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ShardedCounter --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

logo
Build Status

🎰 Simplistic, atomic, interlocked counter that allows for huge numbers of operations to be performed using a "sharding" style approach to summation.

Installation

PM> Install-Package ShardedCounter -Version 1.0.0   

Interface

This library implements the following simplistic interface:

    /// <summary>
    /// A simple counter interface to be used by the Sharded implementation
    /// </summary>
    internal interface ICounter
    {
        /// <summary>
        /// Increase the count by the amount provided
        /// </summary>
        /// <param name="amount">The amount to increase the counter</param>
        void Increase(long amount);

        /// <summary>
        /// Decrease the count by the amount provided
        /// </summary>
        /// <param name="amount">The amount to decrease the counter</param>
        void Decrease(long amount);

        /// <summary>
        /// Get the current count
        /// </summary>
        /// <returns>The current count</returns>
        long Count { get; }
    }

Benchmarks


BenchmarkDotNet=v0.11.1, OS=Windows 10.0.17134.228 (1803/April2018Update/Redstone4)
Intel Core i7-6700 CPU 3.40GHz (Max: 3.41GHz) (Skylake), 1 CPU, 8 logical and 4 physical cores
  [Host]     : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0
  DefaultJob : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0


| Method | Mean | Error | StdDev |
|-------------------------------------------------- |--------:|---------:|---------:|
| ShardedCounterIncreaseCountOneHundredMillionTimes | 2.969 s | 0.0328 s | 0.0307 s |
| ShardedCounterDecreaseCountOneHundredMillionTimes | 3.185 s | 0.0780 s | 0.0691 s |

logo
Build Status

🎰 Simplistic, atomic, interlocked counter that allows for huge numbers of operations to be performed using a "sharding" style approach to summation.

Installation

PM> Install-Package ShardedCounter -Version 1.0.0   

Interface

This library implements the following simplistic interface:

    /// <summary>
    /// A simple counter interface to be used by the Sharded implementation
    /// </summary>
    internal interface ICounter
    {
        /// <summary>
        /// Increase the count by the amount provided
        /// </summary>
        /// <param name="amount">The amount to increase the counter</param>
        void Increase(long amount);

        /// <summary>
        /// Decrease the count by the amount provided
        /// </summary>
        /// <param name="amount">The amount to decrease the counter</param>
        void Decrease(long amount);

        /// <summary>
        /// Get the current count
        /// </summary>
        /// <returns>The current count</returns>
        long Count { get; }
    }

Benchmarks


BenchmarkDotNet=v0.11.1, OS=Windows 10.0.17134.228 (1803/April2018Update/Redstone4)
Intel Core i7-6700 CPU 3.40GHz (Max: 3.41GHz) (Skylake), 1 CPU, 8 logical and 4 physical cores
  [Host]     : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0
  DefaultJob : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0


| Method | Mean | Error | StdDev |
|-------------------------------------------------- |--------:|---------:|---------:|
| ShardedCounterIncreaseCountOneHundredMillionTimes | 2.969 s | 0.0328 s | 0.0307 s |
| ShardedCounterDecreaseCountOneHundredMillionTimes | 3.185 s | 0.0780 s | 0.0691 s |

Release Notes

Initial release.

Dependencies

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.0 318 9/8/2018