Einzelnen Beitrag anzeigen

stpolster

Registriert seit: 18. Okt 2011
30 Beiträge
 
#20

AW: Laufzeitoptimierung eines Consolen-Programms

  Alt 2. Sep 2023, 11:33
Danke für alle Hinweise.
Multithreading ist in den Bedingungen des Tests ausdrücklich "verboten", wobei ich auch nicht wüsste, wie man bei diesem Problem etwas parallel laufen lassen könnte.

Im Moment ist ein Rust-Programm mit 0,4 s Laufzeit das Schnellste.
Code:
// needs:
// cargo add ethnum;
use ethnum::U256;
use std::time::Instant;
fn main() {
    let ten = &U256::new(10);
    let two = &U256::new(2);

    let soll = two.pow(255);
    let z = two.pow(128) - 1;
    let sub = ten.pow(77) / 9;

    let mut a = two.pow(127) + 29;
    let mut b = two.pow(127) - 25;
    let mut c = U256::new(0);

    let mut nad = 0u64;
    let mut nsu = 0u64;

    let watch = Instant::now();

    for _nn in 0..25_000_000 {
        c = &a * &b;
        while &c < &soll {
            c += &#8834;
            nad += 1;
        }
        while &c > &soll {
            c -= &#8834;
            nsu += 1;
        }
        a = &c >> 128;
        b = &c & &z;
    }
    let duration = watch.elapsed();
    println!("c {:?}", c);
    println!("ad={:?} su={:?} in {} s", nad, nsu, duration.as_secs_f64());
}
Wie das möglich ist? Ich weiß es nicht. Zumal ich nicht einmal wusste, dass es ein "Rust" gibt.
  Mit Zitat antworten Zitat