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.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.0 189 9/8/2018