@@ -281,8 +281,20 @@ void resetMembers(struct osmdata_t *osmdata)
281281
282282void printStatus (struct osmdata_t * osmdata )
283283{
284- fprintf (stderr , "\rProcessing: Node(%" PRIdOSMID "k) Way(%" PRIdOSMID "k) Relation(%" PRIdOSMID ")" ,
285- osmdata -> count_node /1000 , osmdata -> count_way /1000 , osmdata -> count_rel );
284+ time_t now ;
285+ time (& now );
286+ time_t end_nodes = osmdata -> start_way > 0 ? osmdata -> start_way : now ;
287+ time_t end_way = osmdata -> start_rel > 0 ? osmdata -> start_rel : now ;
288+ time_t end_rel = now ;
289+ fprintf (stderr , "\rProcessing: Node(%" PRIdOSMID "k %.1fk/s) Way(%" PRIdOSMID "k %.2fk/s) Relation(%" PRIdOSMID " %.2f/s)" ,
290+ osmdata -> count_node /1000 ,
291+ (double )osmdata -> count_node /1000.0 /((int )(end_nodes - osmdata -> start_node ) > 0 ? (double )(end_nodes - osmdata -> start_node ) : 1.0 ),
292+ osmdata -> count_way /1000 ,
293+ osmdata -> count_way > 0 ? (double )osmdata -> count_way /1000.0 /
294+ ((double )(end_way - osmdata -> start_way ) > 0.0 ? (double )(end_way - osmdata -> start_way ) : 1.0 ) : 0.0 ,
295+ osmdata -> count_rel ,
296+ osmdata -> count_rel > 0 ? (double )osmdata -> count_rel /
297+ ((double )(end_rel - osmdata -> start_rel ) > 0.0 ? (double )(end_rel - osmdata -> start_rel ) : 1.0 ) : 0.0 );
286298}
287299
288300int node_wanted (struct osmdata_t * osmdata , double lat , double lon )
@@ -534,6 +546,9 @@ int main(int argc, char *argv[])
534546 }
535547 }
536548
549+ time_t overall_start , overall_end ;
550+ time (& overall_start );
551+
537552 osmdata .out -> start (& options );
538553
539554 realloc_nodes (& osmdata );
@@ -575,10 +590,18 @@ int main(int argc, char *argv[])
575590 xmlMemoryDump ();
576591
577592 if (osmdata .count_node || osmdata .count_way || osmdata .count_rel ) {
593+ time_t now ;
594+ time (& now );
595+ time_t end_nodes = osmdata .start_way > 0 ? osmdata .start_way : now ;
596+ time_t end_way = osmdata .start_rel > 0 ? osmdata .start_rel : now ;
597+ time_t end_rel = now ;
578598 fprintf (stderr , "\n" );
579- fprintf (stderr , "Node stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ")\n" , osmdata .count_node , osmdata .max_node );
580- fprintf (stderr , "Way stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ")\n" , osmdata .count_way , osmdata .max_way );
581- fprintf (stderr , "Relation stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ")\n" , osmdata .count_rel , osmdata .max_rel );
599+ fprintf (stderr , "Node stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ") in %is\n" , osmdata .count_node , osmdata .max_node ,
600+ osmdata .count_node > 0 ? (int )(end_nodes - osmdata .start_node ) : 0 );
601+ fprintf (stderr , "Way stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ") in %is\n" , osmdata .count_way , osmdata .max_way ,
602+ osmdata .count_way > 0 ? (int )(end_way - osmdata .start_way ) : 0 );
603+ fprintf (stderr , "Relation stats: total(%" PRIdOSMID "), max(%" PRIdOSMID ") in %is\n" , osmdata .count_rel , osmdata .max_rel ,
604+ osmdata .count_rel > 0 ? (int )(end_rel - osmdata .start_rel ) : 0 );
582605 }
583606 osmdata .out -> stop ();
584607
@@ -591,6 +614,8 @@ int main(int argc, char *argv[])
591614 project_exit ();
592615 text_exit ();
593616 fprintf (stderr , "\n" );
617+ time (& overall_end );
618+ fprintf (stderr , "Osm2pgsql took %ds overall\n" , (int )(overall_end - overall_start ));
594619
595620 return 0 ;
596621}
0 commit comments