using System.Diagnostics;
public class ICantStopThinkingAboutThis {
public static void Main() {
Random random = new Random();
float[] randomBpms = new float[1 << 20];
for (int i = 0; i < 1 << 20; i++) {
randomBpms[i] = (float) random.NextDouble();
Stopwatch timer = new Stopwatch();
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 1 << 20; j++) {
AddFloatToArrayShifting(randomBpms[j]);
ticks += timer.ElapsedTicks;
ms += timer.ElapsedMilliseconds;
Console.WriteLine($"Shifting: {ticks / 5}t / {ms / 5}ms");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 1 << 20; j++) {
AddFloatToArrayRolling(randomBpms[j]);
ticks += timer.ElapsedTicks;
ms += timer.ElapsedMilliseconds;
Console.WriteLine($"Rolling window: {ticks / 5}t / {ms / 5}ms");
private static float[] bpms = new float[30];
private static void AddFloatToArrayShifting(float _val) {
private static int nextIndex = 0;
private static void AddFloatToArrayRolling(float _val) {
bpms[nextIndex++ % 30] = _val;