@@ -210,22 +210,27 @@ class BagOfCellsLogger {
210210
211211 void start_stage (std::string stage) {
212212 log_speed_at_ = td::Timestamp::in (LOG_SPEED_PERIOD);
213+ last_speed_log_ = td::Timestamp::now ();
213214 processed_cells_ = 0 ;
214215 timer_ = {};
215216 stage_ = std::move (stage);
216217 }
217218 void finish_stage (td::Slice desc) {
218219 LOG (ERROR) << " serializer: " << stage_ << " took " << timer_.elapsed () << " s, " << desc;
219220 }
220- td::Status on_cell_processed ( ) {
221- ++ processed_cells_;
222- if (processed_cells_ % 1000 == 0 ) {
221+ td::Status on_cells_processed ( size_t count ) {
222+ processed_cells_ += count ;
223+ if (processed_cells_ / 1000 > last_token_check_ ) {
223224 TRY_STATUS (cancellation_token_.check ());
225+ last_token_check_ = processed_cells_ / 1000 ;
224226 }
225227 if (log_speed_at_.is_in_past ()) {
226- log_speed_at_ += LOG_SPEED_PERIOD;
227- LOG (WARNING) << " serializer: " << stage_ << " " << (double )processed_cells_ / LOG_SPEED_PERIOD << " cells/s" ;
228+ double period = td::Timestamp::now ().at () - last_speed_log_.at ();
229+
230+ LOG (WARNING) << " serializer: " << stage_ << " " << (double )processed_cells_ / period << " cells/s" ;
228231 processed_cells_ = 0 ;
232+ last_speed_log_ = td::Timestamp::now ();
233+ log_speed_at_ = td::Timestamp::in (LOG_SPEED_PERIOD);
229234 }
230235 return td::Status::OK ();
231236 }
@@ -236,6 +241,8 @@ class BagOfCellsLogger {
236241 td::CancellationToken cancellation_token_;
237242 td::Timestamp log_speed_at_;
238243 size_t processed_cells_ = 0 ;
244+ size_t last_token_check_ = 0 ;
245+ td::Timestamp last_speed_log_;
239246 static constexpr double LOG_SPEED_PERIOD = 120.0 ;
240247};
241248class BagOfCells {
@@ -390,7 +397,7 @@ td::Result<td::BufferSlice> std_boc_serialize_multi(std::vector<Ref<Cell>> root,
390397
391398td::Status std_boc_serialize_to_file (Ref<Cell> root, td::FileFd& fd, int mode = 0 ,
392399 td::CancellationToken cancellation_token = {});
393- td::Status std_boc_serialize_to_file_large (std::shared_ptr<CellDbReader> reader, Cell::Hash root_hash, td::FileFd& fd,
400+ td::Status boc_serialize_to_file_large (std::shared_ptr<CellDbReader> reader, Cell::Hash root_hash, td::FileFd& fd,
394401 int mode = 0 , td::CancellationToken cancellation_token = {});
395402
396403} // namespace vm
0 commit comments