-
-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Description
https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm
This article suggests that FSRS-5 has 19 default parameters, while FSRS-RS uses FSRS-5.5 with 17 parameters, which seems contradictory. FSRS-RS-DART, however, has 19 parameters, suggesting a slightly newer version. Therefore, which library should I use: FSRS-RS or FSRS-RS-DART? Which library has a more recent version of FSRS? Furthermore, why are the version and code differences between these libraries so significant?
All the library versions I mentioned are the latest versions.
Below is the source code for FSRS-RS.benchmark.rs
pub fn criterion_benchmark(c: &mut Criterion) {
let fsrs = FSRS::new(&[
0.81497127,
1.5411042,
4.007436,
9.045982,
4.9264183,
1.039322,
0.93803364,
0.0,
1.5530516,
0.10299722,
0.9981442,
2.210701,
0.018248068,
0.3422524,
1.3384504,
0.22278537,
2.6646678,
])
.unwrap();
c.bench_function("next_states", |b| b.iter(|| black_box(next_states(&fsrs))));
c.bench_function("current_retrievability", |b| {
let state = MemoryState {
stability: 51.344814,
difficulty: 7.005062,
};
b.iter(|| {
black_box(current_retrievability(
black_box(state),
black_box(21.0),
black_box(FSRS6_DEFAULT_DECAY),
))
})
});
{
let mut single_group = c.benchmark_group("calc_mem");
let n_cards = 1000;
let n_reviews = 10;
single_group.throughput(Throughput::Elements(n_cards));
single_group.bench_function(
format!("calc_mem n_cards={n_cards}, n_reviews={n_reviews}"),
|b| b.iter(|| black_box(calc_mem(&fsrs, n_reviews, n_cards.try_into().unwrap()))),
);
single_group.finish();
}
{
let mut batch_group = c.benchmark_group("calc_mem_batch");
for n_cards in [1000, 10_000] {
for n_reviews in [10, 100, 200] {
batch_group.throughput(Throughput::Elements(n_cards));
batch_group.bench_function(
format!("calc_mem_batch n_cards={n_cards}, n_reviews={n_reviews}"),
|b| {
b.iter(|| {
black_box(calc_mem_batch(
&fsrs,
n_reviews,
n_cards.try_into().unwrap(),
))
})
},
);
}
}
batch_group.finish();
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels