48 lines
1.1 KiB
PHP
48 lines
1.1 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace CondorcetPHP\Condorcet\Benchmarks;
|
||
|
||
use CondorcetPHP\Condorcet\Algo\Methods\KemenyYoung\KemenyYoung;
|
||
use CondorcetPHP\Condorcet\Election;
|
||
use PhpBench\Attributes as Bench;
|
||
|
||
ini_set('memory_limit', '51200M');
|
||
|
||
// Must use --executor=memory_centric_microtime
|
||
|
||
class KemenyYoungBench
|
||
{
|
||
public function __construct()
|
||
{
|
||
KemenyYoung::$MaxCandidates = 10;
|
||
}
|
||
|
||
public function provideCandidatesCount(): \Generator
|
||
{
|
||
for ($i = 1; $i <= 10; $i++) {
|
||
yield $i => ['candidatesCount' => $i];
|
||
}
|
||
}
|
||
|
||
|
||
#[Bench\ParamProviders(['provideCandidatesCount'])]
|
||
#[Bench\OutputTimeUnit('milliseconds')]
|
||
#[Bench\Warmup(1)]
|
||
#[Bench\Iterations(3)]
|
||
#[Bench\Revs(4)]
|
||
public function benchKemenyYoung(array $params): void
|
||
{
|
||
$election = new Election;
|
||
|
||
for ($i = 0; $i < $params['candidatesCount']; $i++) {
|
||
$candidates[] = $election->addCandidate();
|
||
}
|
||
|
||
$election->addVote($candidates);
|
||
|
||
$result = $election->getResult('Kemeny–Young');
|
||
}
|
||
}
|