@@ -104,6 +104,7 @@ int App::runECMMarin()
104104 uint64_t curves = options.nmax ? options.nmax : (options.K ? options.K : 250 );
105105 const bool verbose = true ;
106106 const bool forceSigma = (options.curve_seed != 0ULL );
107+ const uint32_t ui_interval_ms = options.ecm_progress_interval_ms ? options.ecm_progress_interval_ms : 2000 ;
107108 if (forceSigma) curves = 1ULL ;
108109
109110 auto splitmix64_step = [](uint64_t & x)->uint64_t { x += 0x9E3779B97f4A7C15ULL ; uint64_t z=x; z^=z>>30 ; z*=0xBF58476D1CE4E5B9ULL ; z^=z>>27 ; z*=0x94D049BB133111EBULL ; z^=z>>31 ; return z; };
@@ -834,15 +835,20 @@ int App::runECMMarin()
834835 else { xDBLADD_strict (2 ,3 , 0 ,1 ); }
835836
836837 auto now = high_resolution_clock::now ();
837- if (duration_cast<milliseconds>(now - last_ui).count () >= 400 || i+1 == total_bits) {
838+ if (duration_cast<milliseconds>(now - last_ui).count () >= ui_interval_ms || i+1 == total_bits) {
838839 double done = double (i + 1 ), total = double (total_bits);
839840 double elapsed = duration<double >(now - t0).count () + saved_et;
840841 double ips = done / std::max (1e-9 , elapsed);
841842 double eta = (total > done && ips > 0.0 ) ? (total - done) / ips : 0.0 ;
842843 std::ostringstream line;
843- line<<" \r [ECM] Curve " <<(c+1 )<<" /" <<curves<<" | Stage1 " <<(i+1 )<<" /" <<total_bits<<" (" <<fixed<<setprecision (2 )<<(done*100.0 /total)<<" %) | ETA " <<fmt_hms (eta);
844- std::cout<<line.str ()<<std::flush; last_ui = now;
844+ line << " \r [ECM] Curve " << (c+1 ) << " /" << curves
845+ << " | Stage1 " << (i+1 ) << " /" << total_bits
846+ << " (" << std::fixed << std::setprecision (1 ) // <== moins de digits
847+ << (done * 100.0 / total) << " %) | ETA " << fmt_hms (eta);
848+ std::cout << line.str () << std::flush;
849+ last_ui = now;
845850 }
851+
846852 if (duration_cast<seconds>(now - last_save).count () >= backup_period) { double elapsed = duration<double >(now - t0).count () + saved_et; save_ckpt ((uint32_t )(i + 1 ), elapsed); last_save = now; }
847853 if (interrupted) { double elapsed = duration<double >(now - t0).count () + saved_et; save_ckpt ((uint32_t )(i + 1 ), elapsed); std::cout<<" \n [ECM] Interrupted at curve " <<(c+1 )<<" , bit " <<(i+1 )<<" /" <<total_bits<<" \n " ; if (guiServer_) { std::ostringstream oss; oss<<" [ECM] Interrupted at curve " <<(c+1 )<<" , bit " <<(i+1 )<<" /" <<total_bits; guiServer_->appendLog (oss.str ()); } curves_tested_for_found=c+1 ; options.curves_tested_for_found = c+1 ; write_result (); delete eng; return 0 ; }
848854 }
@@ -912,20 +918,21 @@ int App::runECMMarin()
912918 else xDBLADD_strict2 (2 ,3 , 0 ,1 );
913919
914920 auto now2 = high_resolution_clock::now ();
915- if (duration_cast<milliseconds>(now2 - last2_ui).count () >= 400 || i+1 == stage2_bits) {
921+ if (duration_cast<milliseconds>(now2 - last2_ui).count () >= ui_interval_ms || i+1 == stage2_bits) {
916922 double done = double (i+1 ), total = double (stage2_bits);
917923 double elapsed = duration<double >(now2 - t2_0).count () + saved_et2;
918924 double ips = done / std::max (1e-9 , elapsed);
919925 double eta = (total > done && ips > 0.0 ) ? (total - done) / ips : 0.0 ;
920926 std::ostringstream line;
921927 line << " \r [ECM] Curve " << (c+1 ) << " /" << curves
922928 << " | Stage2 " << (i+1 ) << " /" << stage2_bits
923- << " (" << std::fixed << std::setprecision (2 )
929+ << " (" << std::fixed << std::setprecision (1 )
924930 << (total ? (done*100.0 /total) : 100.0 )
925931 << " %) | ETA " << fmt_hms (eta);
926932 std::cout << line.str () << std::flush;
927933 last2_ui = now2;
928934 }
935+
929936 if (duration_cast<seconds>(now2 - last2_save).count () >= backup_period) {
930937 double elapsed = duration<double >(now2 - t2_0).count () + saved_et2;
931938 save_ckpt2 ((uint32_t )(i + 1 ), elapsed, stage2_bits);
0 commit comments