mirror of
https://github.com/floor-licker/polyfill-rs.git
synced 2026-07-27 20:47:46 +00:00
86 lines
2.8 KiB
Rust
86 lines
2.8 KiB
Rust
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
use polyfill_rs::{ClobClient, OrderArgs, Side};
|
|
use rust_decimal::Decimal;
|
|
use std::str::FromStr;
|
|
use tokio::runtime::Runtime;
|
|
|
|
// Benchmark: Real network request to get simplified markets
|
|
fn benchmark_real_simplified_markets(c: &mut Criterion) {
|
|
let rt = Runtime::new().unwrap();
|
|
|
|
c.bench_function("real_fetch_simplified_markets", |b| {
|
|
b.iter(|| {
|
|
rt.block_on(async {
|
|
let client = ClobClient::new("https://clob.polymarket.com");
|
|
|
|
// This is the real network request + JSON parsing
|
|
let result = client.get_sampling_simplified_markets(None).await;
|
|
black_box(result)
|
|
})
|
|
})
|
|
});
|
|
}
|
|
|
|
// Benchmark: Real network request to get full markets
|
|
fn benchmark_real_markets(c: &mut Criterion) {
|
|
let rt = Runtime::new().unwrap();
|
|
|
|
c.bench_function("real_fetch_markets", |b| {
|
|
b.iter(|| {
|
|
rt.block_on(async {
|
|
let client = ClobClient::new("https://clob.polymarket.com");
|
|
|
|
// This is the real network request + JSON parsing
|
|
let result = client.get_sampling_markets(None).await;
|
|
black_box(result)
|
|
})
|
|
})
|
|
});
|
|
}
|
|
|
|
// Benchmark: Real order creation (requires API credentials)
|
|
fn benchmark_real_order_creation(c: &mut Criterion) {
|
|
let rt = Runtime::new().unwrap();
|
|
|
|
// Skip if no credentials available
|
|
let private_key = std::env::var("POLYMARKET_PRIVATE_KEY").ok();
|
|
if private_key.is_none() {
|
|
println!("Skipping order creation benchmark - no POLYMARKET_PRIVATE_KEY env var");
|
|
return;
|
|
}
|
|
|
|
c.bench_function("real_create_order_eip712", |b| {
|
|
b.iter(|| {
|
|
rt.block_on(async {
|
|
let client = ClobClient::new("https://clob.polymarket.com");
|
|
|
|
// Set up credentials
|
|
if let Ok(_key) = std::env::var("POLYMARKET_PRIVATE_KEY") {
|
|
// This would require implementing credential setup
|
|
// let creds = ApiCredentials::from_private_key(&key)?;
|
|
// client.set_credentials(creds);
|
|
}
|
|
|
|
let order_args = OrderArgs::new(
|
|
"test_token_id",
|
|
Decimal::from_str("0.75").unwrap(),
|
|
Decimal::from_str("100.0").unwrap(),
|
|
Side::BUY,
|
|
);
|
|
|
|
// This is the real EIP-712 signing + network request
|
|
let result = client.create_order(&order_args, None).await;
|
|
black_box(result)
|
|
})
|
|
})
|
|
});
|
|
}
|
|
|
|
criterion_group!(
|
|
network_benches,
|
|
benchmark_real_simplified_markets,
|
|
benchmark_real_markets,
|
|
benchmark_real_order_creation
|
|
);
|
|
criterion_main!(network_benches);
|