68 lines
1.6 KiB
PHP
68 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace CondorcetPHP\Condorcet\Benchmarks;
|
|
|
|
use CondorcetPHP\Condorcet\{Condorcet, Election};
|
|
use PhpBench\Attributes as Bench;
|
|
|
|
class IntensiveUsageBench
|
|
{
|
|
#[Bench\Warmup(3)]
|
|
#[Bench\Iterations(5)]
|
|
#[Bench\Revs(10)]
|
|
#[Bench\OutputTimeUnit('milliseconds')]
|
|
public function benchSimpleManyVotes(): void
|
|
{
|
|
$election = new Election;
|
|
$election->allowsVoteWeight(true);
|
|
$election->setNumberOfSeats(2);
|
|
|
|
$election->parseCandidates('A;B;C;D;E;F');
|
|
|
|
$election->parseVotes('
|
|
Ultimate Question of Life || A>B>C ^42 * 42
|
|
C=A>B ^2 * 200
|
|
B>C
|
|
E > B > C > A ^80 *50
|
|
F > B > G > H > A* 250
|
|
D = B = E > F ^6 * 48
|
|
');
|
|
|
|
$election->getCondorcetWinner();
|
|
$election->getCondorcetLoser();
|
|
|
|
foreach (Condorcet::getAuthMethods() as $method) {
|
|
$election->getResult($method);
|
|
}
|
|
|
|
$election->setImplicitRanking(false);
|
|
|
|
foreach (Condorcet::getAuthMethods() as $method) {
|
|
$election->getResult($method);
|
|
}
|
|
|
|
$election->allowsVoteWeight(false);
|
|
|
|
foreach (Condorcet::getAuthMethods() as $method) {
|
|
$election->getResult($method);
|
|
}
|
|
|
|
$election->parseVotes('
|
|
Ultimate Question of Life || C>B>A ^42 * 42
|
|
C=A=B ^2 * 200
|
|
B>C
|
|
A > C >E ^80 *50
|
|
G > B > H > F* 250
|
|
C = B = E > A ^6 * 48
|
|
');
|
|
|
|
foreach (Condorcet::getAuthMethods() as $method) {
|
|
$election->getResult($method);
|
|
}
|
|
|
|
$votes = $election->getVotesListAsString();
|
|
}
|
|
}
|