Danga-Socket
    
    
  
  
  
view release on metacpan or search on metacpan
lib/Danga/Socket.pm view on Meta::CPAN
    my $fire_time = Time::HiRes::time() + $secs;
    my $timer = bless [$fire_time, $coderef], "Danga::Socket::Timer";
    if (!@Timers || $fire_time >= $Timers[-1][0]) {
        push @Timers, $timer;
        return $timer;
    }
    # Now, where do we insert?  (NOTE: this appears slow, algorithm-wise,
    # but it was compared against calendar queues, heaps, naive push/sort,
    # and a bunch of other versions, and found to be fastest with a large
    # variety of datasets.)
    for (my $i = 0; $i < @Timers; $i++) {
        if ($Timers[$i][0] > $fire_time) {
            splice(@Timers, $i, 0, $timer);
            return $timer;
        }
    }
    die "Shouldn't get here.";
( run in 0.416 second using v1.01-cache-2.11-cpan-5dc5da66d9d )