QWEN3.8初次完成
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
//! Bonding Curve 数学计算基准测试
|
||||
|
||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||
|
||||
// 注意: 需要 bonding_curve 模块可访问
|
||||
// 实际使用时可能需要调整路径
|
||||
|
||||
fn bench_calculate_buy(c: &mut Criterion) {
|
||||
let virtual_sol = 30_000_000_000u64; // 30 SOL
|
||||
let virtual_token = 1_073_000_191_000_000u64;
|
||||
let real_token = 793_100_000_000_000u64;
|
||||
let sol_amount = 1_000_000_000u64; // 1 SOL
|
||||
|
||||
c.bench_function("calculate_buy_1_sol", |b| {
|
||||
b.iter(|| {
|
||||
// 内联计算 (避免模块路径问题)
|
||||
let input_after_fee = (sol_amount - 1) * 10000 / (125 + 10000) + 1;
|
||||
let numerator = input_after_fee as u128 * virtual_token as u128;
|
||||
let denominator = virtual_sol as u128 + input_after_fee as u128;
|
||||
let tokens_out = (numerator / denominator) as u64;
|
||||
black_box(tokens_out.min(real_token))
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_calculate_sell(c: &mut Criterion) {
|
||||
let virtual_sol = 31_000_000_000u64;
|
||||
let virtual_token = 1_038_000_000_000_000u64;
|
||||
let token_amount = 34_000_000_000_000u64;
|
||||
|
||||
c.bench_function("calculate_sell", |b| {
|
||||
b.iter(|| {
|
||||
let numerator = token_amount as u128 * virtual_sol as u128;
|
||||
let denominator = virtual_token as u128 + token_amount as u128;
|
||||
let sol_out_raw = (numerator / denominator) as u64;
|
||||
let sol_out = sol_out_raw * (10000 - 125) / 10000;
|
||||
black_box(sol_out)
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_price_calculation(c: &mut Criterion) {
|
||||
let virtual_sol = 50_000_000_000u64;
|
||||
let virtual_token = 643_800_000_000_000u64;
|
||||
|
||||
c.bench_function("spot_price", |b| {
|
||||
b.iter(|| {
|
||||
let price = virtual_sol as f64 / virtual_token as f64;
|
||||
black_box(price * 1_000_000.0 / 1_000_000_000.0)
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
benches,
|
||||
bench_calculate_buy,
|
||||
bench_calculate_sell,
|
||||
bench_price_calculation,
|
||||
);
|
||||
criterion_main!(benches);
|
||||
Reference in New Issue
Block a user