Right now I make profiling data. It is not that slow. For example(20 maps, 512x512, 50 cities):
index % time self children called name
---------------------------------------------
0.95 504.55 21/21 karte_t::enlarge_map(einstellungen_t*, signed char*) [4]
[5] 89.5 0.95 504.55 21 karte_t::distribute_groundobjs_cities(einstellungen_t const*, short, short) [5]
0.00 429.65 18416/19009 wegbauer_t::calc_route(koord3d const&, koord3d const&) [6]
0.01 45.47 17346/17346 route_t::calc_route(karte_t*, koord3d, koord3d, fahrer_t*, unsigned int, unsigned int) [20]
0.00 13.95 21/21 karte_t::create_rivers(short) [41]
2.50 5.57 21/21 stadt_t::random_place(karte_t const*, vector_tpl<int> const*, unsigned int, unsigned int, short, short) [61]
0.00 3.20 1001/1001 stadt_t::stadt_t(spieler_t*, koord, int) [101]
my new function(random_place) uses only small % of total map generation time.