Gauge

Iterative polling

image https://github.com/Kaiepi/ra-Gauge/actions/workflows/test.yml/badge.svg not found

NAME

Gauge - Iterative polling

SYNOPSIS

use v6.d;
use Gauge;
# How fast can (1..10) be generated? Take an estimate of how many iterations
# can be sunk in 1 second every 20 seconds:
.say for Gauge(-> --> Nil { sink 1..10 }).poll(1).throttle(19);

DESCRIPTION

class Gauge is Seq { ... }

Gauge, in general, wraps a lazy, non-deterministic, time-oriented iterator. At its base, it attempts to measure durations of calls to a block with as little overhead as possible in order to avoid unnecessary influence over results. This does not make for a proper benchmark on its own, but may provide raw input for such a utility.

ATTRIBUTES

$!gc

has Bool:D $.gc is default(so $*VM.name eq <moar jvm>.any);

$!gc toggles garbage collection before intensive iterations in general, i.e. those of poll currently. By default, this will be True on MoarVM and the JVM. If set to False, iterations are very likely to be skewed by any interruption due to GC (if available).

METHODS

CALL-ME

method CALL-ME(::?CLASS:_: Block:D $block, *%attrinit --> ::?CLASS:D)

Produces a new Gauge sequence of native int durations of a call to the given block. As such, the size of a duration is constrained by $?BITS and is prone to underflows. Measurements of each duration are not monotonic, thus leap seconds and hardware errors will skew results.

If %attrinit is provided, a clone will be produced with it to allow for attributes to be set.

poll

method poll(::?CLASS:D: Real:D $seconds --> ::?CLASS:D)

Returns a new Gauge sequence that produces an Int:D count of iterations of the former totalling a duration of $seconds. This will take longer than the given argument to complete due to the overhead of iteration.

throttle

method throttle(::?CLASS:D: Real:D $seconds --> ::?CLASS:D)

Returns a new Gauge sequence that will sleep $seconds between iterations of the former.

AUTHOR

Ben Davies (Kaiepi)

COPYRIGHT AND LICENSE

Copyright 2021 Ben Davies

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

Gauge v0.0.1

Iterative polling

Authors

  • Ben Davies

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Gauge

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.