1 unstable release

Uses new Rust 2024

new 0.1.2 May 13, 2025

#78 in Visualization


Used in 2 crates (via freezeout-core)

Apache-2.0

2MB
20K SLoC

Freezeout Poker Hands Evaluator

Poker hand evaluator for 5, 6 and 7 cards hands. This evaluator is a port of the Cactus Kev's poker evaluator with an additional lookup table for faster 7 cards evaluation.

On my box I get ~50M 7-cards hands/s with a single thread and around ~140M 7-cards hands/s with parallel processing (4 tasks).

If you use this crate enable the following optmizations (see root Cargo.toml):

[profile.release]
opt-level = 3
lto = "fat"

Running examples

To run the single threaded example:

$ cargo r --release --example eval_all7
...
Total hands      133784560
Elapsed:         2.480s
Hands/sec:       53950756

High Card:       23294460
One  Pair:       58627800
Two Pairs:       31433400
Three of a Kind: 6461620
Staight:         6180020
Flush:           4047644
Full House:      3473184
Four of a Kind:  224848
Straight Flush:  41584

To run the multi threaded example::

$ cargo r --release --features=parallel --example par_eval_all7
...
Total hands      133784560
Elapsed:         0.945s
Hands/sec:       141543977

High Card:       23294460
One  Pair:       58627800
Two Pairs:       31433400
Three of a Kind: 6461620
Staight:         6180020
Flush:           4047644
Full House:      3473184
Four of a Kind:  224848
Straight Flush:  41584

To run the hands chart example:

$ cargo r --release --features=parallel --example chart
...
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| AA  | AKs | AQs | AJs | ATs | A9s | A8s | A7s | A6s | A5s | A4s | A3s | A2s |
| 85% | 67% | 66% | 64% | 64% | 61% | 61% | 59% | 58% | 58% | 57% | 56% | 56% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| AKo | KK  | KQs | KJs | KTs | K9s | K8s | K7s | K6s | K5s | K4s | K3s | K2s |
| 65% | 82% | 62% | 61% | 60% | 59% | 57% | 56% | 55% | 54% | 53% | 52% | 51% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| AQo | KQo | QQ  | QJs | QTs | Q9s | Q8s | Q7s | Q6s | Q5s | Q4s | Q3s | Q2s |
| 64% | 60% | 79% | 59% | 58% | 56% | 54% | 53% | 52% | 51% | 50% | 49% | 48% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| AJo | KJo | QJo | JJ  | JTs | J9s | J8s | J7s | J6s | J5s | J4s | J3s | J2s |
| 63% | 59% | 57% | 77% | 56% | 55% | 52% | 51% | 49% | 48% | 47% | 46% | 45% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| ATo | KTo | QTo | JTo | TT  | T9s | T8s | T7s | T6s | T5s | T4s | T3s | T2s |
| 62% | 58% | 56% | 54% | 75% | 52% | 51% | 49% | 47% | 45% | 44% | 43% | 43% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A9o | K9o | Q9o | J9o | T9o | 99  | 98s | 97s | 96s | 95s | 94s | 93s | 92s |
| 59% | 56% | 54% | 51% | 50% | 71% | 49% | 47% | 45% | 43% | 41% | 41% | 40% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A8o | K8o | Q8o | J8o | T8o | 98o | 88  | 87s | 86s | 85s | 84s | 83s | 82s |
| 58% | 54% | 52% | 50% | 48% | 46% | 69% | 46% | 44% | 42% | 40% | 38% | 38% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A7o | K7o | Q7o | J7o | T7o | 97o | 87o | 77  | 76s | 75s | 74s | 73s | 72s |
| 57% | 53% | 50% | 48% | 46% | 44% | 43% | 66% | 43% | 41% | 39% | 38% | 35% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A6o | K6o | Q6o | J6o | T6o | 96o | 86o | 76o | 66  | 65s | 64s | 63s | 62s |
| 56% | 52% | 49% | 46% | 44% | 42% | 41% | 40% | 63% | 40% | 39% | 37% | 35% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A5o | K5o | Q5o | J5o | T5o | 95o | 85o | 75o | 65o | 55  | 54s | 53s | 52s |
| 56% | 51% | 48% | 45% | 42% | 40% | 39% | 38% | 37% | 60% | 39% | 37% | 35% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A4o | K4o | Q4o | J4o | T4o | 94o | 84o | 74o | 64o | 54o | 44  | 43s | 42s |
| 55% | 50% | 47% | 44% | 41% | 38% | 37% | 35% | 35% | 35% | 56% | 36% | 34% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A3o | K3o | Q3o | J3o | T3o | 93o | 83o | 73o | 63o | 53o | 43o | 33  | 32s |
| 54% | 49% | 46% | 43% | 40% | 38% | 35% | 34% | 33% | 33% | 32% | 53% | 33% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| A2o | K2o | Q2o | J2o | T2o | 92o | 82o | 72o | 62o | 52o | 42o | 32o | 22  |
| 53% | 48% | 45% | 42% | 39% | 36% | 34% | 32% | 31% | 31% | 30% | 29% | 49% |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
Elapsed: 0.950s

To run the egui board example:

$ cargo r --release --example board

Board Example

Dependencies

~1.6–2.4MB
~42K SLoC