BlockstreamResearch / rust-simplicity

Creative Commons Zero v1.0 Universal
58 stars 12 forks source link

word-unit composition is slow #178

Open uncomputable opened 1 year ago

uncomputable commented 1 year ago

The following program takes minutes to finalize on my machine. It is taken from the Simplicity test vectors, also found in the asset generator.

rust-simplicity is not meant to be as fast as C-simplicity, but it seems strange that a simple program like this takes so long.

use simplicity::jet::Core;
use simplicity::node::{CoreConstructible};
use simplicity::{Value, WitnessNode};

let mut word = Value::u8(0x00);
for _ in 0..20 {
    word = Value::prod(word.clone(), word.clone());
}

// FIXME: Finalizing this program takes a long time
let program = Arc::<WitnessNode<Core>>::comp(
    &Arc::<WitnessNode<Core>>::const_word(word),
    &Arc::<WitnessNode<Core>>::unit(),
)
.unwrap()
.finalize()
.unwrap();