I did some profiling of flightgear because I'd like to optimize performance of the terrain culling + rendering which is bad when terrain fog is far, that mean when there is a lot to render and cull in the scene graph. Performance is fine with the default fog distance though but it gets very bad when you put it farther with keys Z/z. When fog is very far or disabled it can go below 20fps and become very jerky. Something I noticed also is that flightgear mem usage keep growing and growing over time and it is much more apparent and quick when loading a lot of tiles when fog is far. I had it to the point it filled quickly the swap and flightgear was killed by the kernel. I think most of the bad performance with lots of polygon implied by far fog comes from the scene graph from ssg. Another case of bad performance is terrain generated from 3 arcsec DEM with good resolution when the terrain is moutains or hills like Hell's Canyon (ftp://ftp.flightgear.org/pub/fgfs/Scenery/w120n40.tar.gz).
Test system: Athlon 1900+ XP 512Mb RAM Geforce 4 TI 4200 latest NVIDIA binary drivers 41.91 FlightGear compiled with: - gcc 2.95.3 - FlightGear CVS - SimGear CVS - plib 1.6.0 - FlighGear and libs compiled with -g -pg - no threaded tile loader support and no optimizations (-02) Test run with options: --disable-sound --enable-auto-coordination --aircraft=ufo --start-date-lat=2002:01:10:11:00:00 --disable-clouds 800x600x32 windowed ufo at max speed during 83 seconds running time. all percentages are in % of total execution time - 67.8% in fgRenderFrame() [2] - 64.4% is from ssgCullAndDraw() [3] divided in: - 12.9% : ssgCullAndDraw() called by SGSky::preDraw() that is only used when skyblend is enabled (--enable-skyblend). It is enabled by default - 51.5% : ssgCullAndDraw() of the whole scene graph (terrain + objects) or - 53.3% culling - 9.1 % drawing at the leaves of the scene graph (ssgVtxTable::draw(void) [18]) - 20.7% in FGTileMgr::update() [8] most of which is due to FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] Some observations: - most of the time is spent in ssg and sg functions - I'm not sure the culling take 53.3% of total time because the profile data is quite hard sometimes to understand because of cycles but culling still takes a lot of time. - drawing the blended sky shouldn't be taking 12.9% of total time i'll see if I can fix that - A fair amount of total time (14.1%) is passed in sgFrustum::contains(sgSphere const *) const [15] the half of which (7.05 %) is in the function itself and not its children (it might be inlined function though). Flat profile: % the percentage of the total running time of the time program used by this function. cumulative a running sum of the number of seconds accounted seconds for by this function and those listed above it. self the number of seconds accounted for by this seconds function alone. This is the major sort for this listing. calls the number of times this function was invoked, if this function is profiled, else blank. self the average number of milliseconds spent in this ms/call function per call, if this function is profiled, else blank. total the average number of milliseconds spent in this ms/call function and its descendents per call, if this function is profiled, else blank. name the name of the function. This is the minor sort for this listing. The index shows the location of the function in the gprof listing. If the index is in parenthesis it shows where it would appear in the gprof listing if it were to be printed. Each sample counts as 0.001 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 7.05 5.84 5.84 26372747 0.00 0.00 sgFrustum::contains(sgSphere const *) const 5.02 10.00 4.16 2996413 0.00 0.01 ssgBranch::cull(sgFrustum *, float (*)[3], int) 3.87 13.20 3.20 69787344 0.00 0.00 ssgEntity::isDirtyBSphere(void) 3.68 16.25 3.05 67381320 0.00 0.00 ssgList::getEntity(unsigned int) 3.21 18.91 2.66 5662019 0.00 0.00 sgMultMat4(float (*)[3], float const (*)[3], float const (*)[3]) 3.05 21.44 2.53 33844511 0.00 0.00 ssgEntity::getTraversalMask(void) 2.95 23.88 2.44 154571808 0.00 0.00 sgSphere::getRadius(void) const 2.69 26.11 2.23 6292 0.35 2.51 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) 2.62 28.28 2.17 83039779 0.00 0.00 sgScalarProductVec3(float const *, float const *) 2.61 30.44 2.16 35003350 0.00 0.00 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) 2.42 32.44 2.00 171630869 0.00 0.00 sgSphere::getCenter(void) const 2.21 34.27 1.83 27045892 0.00 0.00 sgXformPnt3(float *, float const *, float const (*)[3]) 2.18 36.08 1.81 69787327 0.00 0.00 ssgEntity::getBSphere(void) 2.09 37.81 1.73 4554070 0.00 0.00 ssgSelector::select(unsigned int) 2.07 39.53 1.72 8746726 0.00 0.00 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) 1.97 41.16 1.63 29635594 0.00 0.00 ssgSimpleList::getNum(void) 1.96 42.78 1.62 3527413 0.00 0.00 ssgSimpleState::apply(void) 1.84 44.31 1.53 77163078 0.00 0.00 sgCopyVec4(float *, float const *) 1.73 45.75 1.44 11449174 0.00 0.00 ssgTransform::cull(sgFrustum *, float (*)[3], int) 1.41 46.91 1.17 121 9.65 9.65 ssgMakeMipMaps(unsigned char *, int, int, int) 1.39 48.07 1.15 45449038 0.00 0.00 ssgBranch::getNextKid(void) 1.36 49.20 1.13 45449038 0.00 0.00 ssgList::getNextEntity(void) 1.35 50.32 1.12 41281058 0.00 0.00 sgdScalarProductVec3(double const *, double const *) 1.07 51.20 0.89 23800923 0.00 0.00 ssgEntity::preTravTests(int *, int) 1.03 52.06 0.85 10067964 0.00 0.00 sgdXformPnt3(double *, double const *, double const (*)[3]) 1.02 52.90 0.84 19029592 0.00 0.00 sgCopyMat4(float (*)[3], float const (*)[3]) 0.97 53.70 0.80 3476085 0.00 0.00 ssgVtxTable::draw_geometry(void) 0.81 54.37 0.67 11769956 0.00 0.00 ssgLeaf::cull(sgFrustum *, float (*)[3], int) 0.81 55.04 0.67 20863915 0.00 0.00 ssgSimpleList::raw_get(unsigned int) 0.75 55.66 0.62 23797136 0.00 0.00 sgdSubVec3(double *, double const *, double const *) 0.73 56.27 0.61 32925526 0.00 0.00 sgSphere::isEmpty(void) const 0.72 56.87 0.59 27045892 0.00 0.00 sgSphere::orthoXform(float const (*)[3]) 0.70 57.44 0.58 38890517 0.00 0.00 ssgContext::getState(void) 0.64 57.97 0.53 20779133 0.00 0.00 ssgBranch::getKid(int) 0.58 58.46 0.48 19154123 0.00 0.00 ssgVtxTable::getNumVertices(void) 0.57 58.93 0.47 26372747 0.00 0.00 ssgContext::isOrtho(void) 0.53 59.37 0.44 295504 0.00 0.01 FGTileEntry::prep_ssg_node(Point3D const &, float *, float) 0.52 59.80 0.43 53980 0.01 0.08 FGHitList::IntersectLeaf(ssgLeaf *, double (*)[3], double *, double *, unsigned int) 0.52 60.23 0.43 3476085 0.00 0.00 ssgVtxTable::draw(void) 0.48 60.63 0.40 12836 0.03 0.03 calc_magvar(double, double, double, long, double *) 0.40 60.96 0.33 5947250 0.00 0.00 ssgVtxTable::getVertex(int) 0.39 61.28 0.32 5930928 0.00 0.00 _ssgPopMatrix(void) 0.38 61.59 0.32 9889814 0.00 0.00 sgEqualVec3(float const *, float const *) 0.38 61.91 0.32 5930928 0.00 0.00 _ssgPushMatrix(float (*)[3]) 0.38 62.22 0.31 24120909 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::rep(void) const 0.36 62.52 0.30 5577290 0.00 0.00 sgdNormaliseVec3(double *) 0.34 62.80 0.28 121 2.32 14.01 ssgSGIHeader::ssgSGIHeader(char const *, ssgTextureInfo *) 0.33 63.08 0.28 6415 0.04 0.12 FGMaterialLib::load_next_deferred(void) 0.32 63.34 0.26 5106052 0.00 0.00 ssgStateSelector::getCurrentStep(void) 0.31 63.59 0.25 8325800 0.00 0.00 sgLengthVec3(float const *) 0.30 63.84 0.25 10043588 0.00 0.00 IN_RANGE(double *, double) 0.30 64.08 0.24 10043588 0.00 0.00 sgdXformPnt3(double *, double const (*)[3]) 0.29 64.33 0.24 71456 0.00 0.00 ssgSGIHeader::getRow(unsigned char *, int, int) 0.29 64.57 0.24 11892214 0.00 0.00 sgdScaleVec3(double *, double const *, double) 0.29 64.81 0.24 9650703 0.00 0.00 ssgVertexArray::get(unsigned int) 0.29 65.05 0.24 3476085 0.00 0.00 ssgLeaf::isTranslucent(void) 0.27 65.27 0.23 4090182 0.00 0.00 _ssgDList::draw(void) 0.26 65.48 0.21 8764372 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::length(void) const 0.25 65.69 0.21 1739378 0.00 0.00 SGPropertyNode::incrementRef(void) 0.25 65.90 0.20 5946295 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::data(void) const 0.24 66.10 0.20 3476085 0.00 0.00 ssgLeaf::preDraw(void) 0.23 66.29 0.19 2667647 0.00 0.00 sgSphere::extend(sgSphere const *) 0.22 66.48 0.18 1414153 0.00 0.00 _Rb_tree_base_iterator::_M_increment(void) 0.21 66.65 0.18 10107584 0.00 0.00 sgdSetVec3(double *, double, double, double) 0.21 66.83 0.18 5577290 0.00 0.00 sgdLengthVec3(double const *) 0.21 67.00 0.17 9656301 0.00 0.00 sgSqrt(float) 0.20 67.17 0.17 5655589 0.00 0.00 sgPreMultMat4(float (*)[3], float const (*)[3]) 0.20 67.34 0.17 4199022 0.00 0.00 _ssgDList::setPushMatrix(float (*)[3]) 0.20 67.50 0.17 3476085 0.00 0.00 ssgContext::setCullface(int) 0.18 67.66 0.15 1436165 0.00 0.00 leaf_in_range_callback(ssgEntity *, int) 0.18 67.80 0.14 477239 0.00 0.00 SGPropertyNode::hash_table::bucket::get_entry(char const *, bool) 0.17 67.94 0.14 3564963 0.00 0.00 ssgTexCoordArray::get(unsigned int) 0.17 68.08 0.14 8096716 0.00 0.00 ssgEntity::postTravTests(int) 0.17 68.22 0.14 1330491 0.00 0.00 sgDistanceVec3(float const *, float const *) 0.16 68.35 0.14 2553026 0.00 0.00 ssgStateSelector::apply(void) 0.16 68.49 0.14 1519082 0.00 0.00 ssgEntity::dirtyBSphere(void) 0.16 68.62 0.13 479427 0.00 0.00 SGPropertyNode::hash_table::get(char const *) 0.15 68.75 0.13 1848626 0.00 0.00 sgdDistanceSquaredVec3(double const *, double const *) 0.15 68.88 0.12 6099173 0.00 0.00 sgdEqualVec3(double const *, double const *) 0.15 69.00 0.12 5577290 0.00 0.00 sgdScaleVec3(double *, double) 0.15 69.13 0.12 4098374 0.00 0.00 _ssgDList::setEmpty(void) 0.15 69.25 0.12 logbuf::overflow(int) 0.15 69.38 0.12 2553026 0.00 0.00 ssgStateSelector::isTranslucent(void) 0.15 69.50 0.12 484630 0.00 0.00 SGPropertyNode::hash_table::hashcode(char const *) 0.15 69.62 0.12 5742345 0.00 0.00 sgdSetVec3(double *, float *) 0.15 69.74 0.12 3480229 0.00 0.00 ssgVtxTable::getNumColours(void) 0.14 69.86 0.12 4210062 0.00 0.00 ssgColourArray::get(unsigned int) 0.14 69.98 0.12 1348572 0.00 0.00 ssgBranch::recalcBSphere(void) 0.14 70.10 0.12 979523 0.00 0.00 __default_alloc_template<true, 0>::allocate(unsigned int) 0.14 70.21 0.12 1848626 0.00 0.00 sgdMakeNormal(double *, double const *, double const *, double const *) 0.14 70.33 0.12 760912 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::replace(unsigned int, unsigned int, unsigned int, char) 0.14 70.44 0.11 8932541 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::data(void) 0.14 70.55 0.11 5545878 0.00 0.00 sgdSquare(double) 0.13 70.66 0.11 5493085 0.00 0.00 sgCopyVec3(float *, float const *) 0.13 70.77 0.11 3514581 0.00 0.00 ssgLeaf::hasState(void) 0.13 70.88 0.11 7228162 0.00 0.00 ssgSimpleState::getTexture(void) 0.13 70.98 0.10 1024967 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::compare(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &, unsigned int, unsigned int) const 0.12 71.09 0.10 3515478 0.00 0.00 ssgLeaf::getState(void) 0.12 71.19 0.10 807553 0.00 0.00 SGPropertyNode::getName(void) const 0.12 71.29 0.10 next_state 0.12 71.39 0.10 1731906 0.00 0.00 _ssgLoadMatrix(float (*)[3]) 0.12 71.49 0.10 init_genrand 0.12 71.58 0.10 3565910 0.00 0.00 ssgState::preApply(void) 0.11 71.68 0.09 6415 0.01 8.76 fgRenderFrame(void) 0.11 71.77 0.09 1848626 0.00 0.00 sgdVectorProductVec3(double *, double const *, double const *) 0.11 71.86 0.09 3502363 0.00 0.00 enable_00(void) 0.11 71.95 0.09 2215365 0.00 0.00 isZeroAreaTri(double (*)[2]) 0.11 72.04 0.09 3476085 0.00 0.00 ssgVtxTable::getNumNormals(void) 0.11 72.13 0.09 264510 0.00 0.00 fntTexFont::low_putch(float *, float, float, char) 0.10 72.21 0.08 3476657 0.00 0.00 ssgState::isTranslucent(void) 0.10 72.30 0.08 1882073 0.00 0.00 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::operator[](unsigned int) const 0.10 72.38 0.08 3476675 0.00 0.00 ssgLeaf::getCullFace(void) 0.10 72.46 0.08 618481 0.00 0.00 SGPropertyNode::getDoubleValue(void) const 0.10 72.55 0.08 429323 0.00 0.00 ssgCutout::cull(sgFrustum *, float (*)[3], int) 0.10 72.63 0.08 2553598 0.00 0.00 sgEqualVec4(float const *, float const *) 0.10 72.71 0.08 32080 0.00 0.06 _ssgDrawDList(void) 0.10 72.79 0.08 6417 0.01 0.02 SGSkyDome::repaint(float *, float *, double, double) 0.10 72.87 0.08 4126320 0.00 0.00 sgSquare(float) Call graph (explanation follows) This table describes the call tree of the program, and was sorted by the total amount of time spent in each function and its children. Each entry in this table consists of several lines. The line with the index number at the left hand margin lists the current function. The lines above it list the functions that called this function, and the lines below it list the functions this one called. This line lists: index A unique number given to each element of the table. Index numbers are sorted numerically. The index number is printed next to every function name so it is easier to look up where the function in the table. % time This is the percentage of the `total' time that was spent in this function and its children. Note that due to different viewpoints, functions excluded by options, etc, these numbers will NOT add up to 100%. self This is the total amount of time spent in this function. children This is the total amount of time propagated into this function by its children. called This is the number of times the function was called. If the function called itself recursively, the number only includes non-recursive calls, and is followed by a `+' and the number of recursive calls. name The name of the current function. The index number is printed after it. If the function is a member of a cycle, the cycle number is printed between the function's name and the index number. For the function's parents, the fields have the following meanings: self This is the amount of time that was propagated directly from the function into this parent. children This is the amount of time that was propagated from the function's children into this parent. called This is the number of times this parent called the function `/' the total number of times the function was called. Recursive calls to the function are not included in the number after the `/'. name This is the name of the parent. The parent's index number is printed after it. If the parent is a member of a cycle, the cycle number is printed between the name and the index number. If the parents of the function cannot be determined, the word `<spontaneous>' is printed in the `name' field, and all the other fields are blank. For the function's children, the fields have the following meanings: self This is the amount of time that was propagated directly from the child into the function. children This is the amount of time that was propagated from the child's children to the function. called This is the number of times the function called this child `/' the total number of times the child was called. Recursive calls by the child are not listed in the number after the `/'. name This is the name of the child. The child's index number is printed after it. If the child is a member of a cycle, the cycle number is printed between the name and the index number. If there are any cycles (circles) in the call graph, there is an entry for the cycle-as-a-whole. This entry shows who called the cycle (as parents) and the members of the cycle (as children.) The `+' recursive calls entry shows the number of function calls that were internal to the cycle, and the calls entry for each member shows, for that member, how many times it was called from other members of the cycle. granularity: each sample hit covers 4 byte(s) for 0.00% of 82.86 seconds index % time self children called name <spontaneous> [1] 95.7 0.07 79.24 fgMainLoop(void) [1] 0.09 56.10 6415/6415 fgRenderFrame(void) [2] 0.01 17.16 6415/6416 FGTileMgr::update(FGLocation *, double, double *) [8] 0.03 1.66 6415/6415 FGTileMgr::prep_ssg_nodes(FGLocation *, float) [50] 0.02 1.67 6414/6414 fgUpdateTimeDepCalcs(void) [51] 0.28 0.48 6415/6415 FGMaterialLib::load_next_deferred(void) [85] 0.00 0.69 6415/6415 FGSubsystemMgr::update(double) [87] 0.00 0.20 6415/6415 SGMagVar::update(double, double, double, double) [181] 0.01 0.14 6415/6415 FGEnvironmentMgr::update(double) [218] 0.01 0.13 6415/6415 FGATCMgr::update(double) [222] 0.00 0.12 19245/135571 fgGetBool(char const *, bool) [80] 0.00 0.12 19245/79290 fgGetInt(char const *, int) [104] 0.01 0.07 32075/618817 SGPropertyNode::getDoubleValue(void) const <cycle 2> [264] 0.02 0.05 6415/6416 SGTime::update(double, double, long, long) [338] 0.00 0.05 6415/6416 FGViewer::get_absolute_view_pos(void) [358] 0.01 0.02 6415/6415 FGIO::update(double) [548] 0.00 0.01 6415/618817 fgGetDouble(char const *, double) <cycle 2> [708] 0.01 0.00 6415/6415 fgGetTimeInterval(void) [665] 0.00 0.00 19245/250446 SGPropertyNode::getBoolValue(void) const [262] 0.01 0.00 12803/12803 FGInterface::getACModel(void) const [931] 0.00 0.00 12803/19219 FGScenery::get_next_center(void) const [1052] 0.00 0.00 12809/12809 FGLocation::get_cur_elev_m(void) [1190] 0.00 0.00 6415/6420 SGPropertyNode::getLongValue(void) const [1192] 0.00 0.00 6388/6393 FGModelPlacement::getFGLocation(void) [1201] 0.00 0.00 32292/180027 sglog(void) [664] 0.00 0.00 12830/788750 FGGlobals::get_current_view(void) const [223] 0.00 0.00 38465/38466 FGViewer::getFGLocation(void) const [1307] 0.00 0.00 6415/6418 FGGlobals::get_io(void) const [1325] 0.00 0.00 6388/6393 FGAircraftModel::get3DModel(void) [1336] 0.00 0.00 6416/21438 SGTimeStamp::stamp(void) [930] 0.00 0.00 6415/19477 operator-(SGTimeStamp const &, SGTimeStamp const &) [1017] 0.00 0.00 12830/23808 SGTime::get_cur_time(void) const [1184] 0.00 0.00 38384/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 32292/180026 logstream::operator<<(loglevel const &) [955] 0.00 0.00 12830/12833 FGGlobals::get_tile_mgr(void) const [1527] 0.00 0.00 6415/6417 FGGlobals::get_environment_mgr(void) [1545] 0.00 0.00 6415/6423 FGGlobals::get_subsystem_mgr(void) const [1540] 0.00 0.00 6388/19216 FGInterface::get_inited(void) const [1320] 0.00 0.00 12830/43755 FGGlobals::get_time_params(void) const [1305] 0.00 0.00 6410/98624 FGInterface::get_Altitude(void) const [808] 0.00 0.00 25581/782273 FGScenery::get_cur_elev(void) const [662] 0.00 0.00 12803/12803 FGLocation::set_tile_center(Point3D) [1741] 0.00 0.00 32292/180026 loglevel::loglevel(sgDebugClass, sgDebugPriority) [1665] 0.00 0.00 205/6129 FGGeneral::get_frame_rate(void) const [1204] 0.00 0.00 5/531 fgGetNode(char const *, bool) [1161] 0.00 0.00 12830/12831 FGGlobals::get_warp_delta(void) const [3085] 0.00 0.00 12778/12779 FGLocation::set_cur_elev_m(double) [3086] 0.00 0.00 6415/12829 SGTimeStamp::operator=(SGTimeStamp const &) [10480] 0.00 0.00 6415/6415 FGGlobals::inc_sim_time_sec(double) [3145] 0.00 0.00 6415/6418 FGGlobals::get_warp(void) const [3120] 0.00 0.00 6415/6415 SGTime::getJD(void) const [3140] 0.00 0.00 6415/19197 FGGlobals::get_mag(void) const [3065] 0.00 0.00 6415/6416 FGGlobals::get_ATC_mgr(void) const [3132] 0.00 0.00 205/205 FGGeneral::set_frame_rate(int) [3397] 0.00 0.00 11/12 FGInterface::set_Altitude(double) [3658] ----------------------------------------------- 0.09 56.10 6415/6415 fgMainLoop(void) [1] [2] 67.8 0.09 56.10 6415 fgRenderFrame(void) [2] 0.02 42.64 25664/32080 ssgCullAndDraw(ssgRoot *) [3] 0.00 10.67 6416/6416 SGSky::preDraw(void) [17] 0.00 0.45 70578/135571 fgGetBool(char const *, bool) [80] 0.01 0.40 6416/6416 puDisplay(void) [118] 0.00 0.38 6416/6416 SGSky::reposition(float *, float *, float *, double, double, double, double, double, double, double, double, double, double, double) [131] 0.01 0.25 6416/6416 fgCockpitUpdate(void) [159] 0.01 0.24 6416/6417 fgReshape(int, int) [164] 0.01 0.22 6416/6416 FGPanel::update(double) [171] 0.01 0.19 6416/6416 SGSky::repaint(float *, float *, double, double, int, double (*)[2], int, double (*)[2]) [185] 0.00 0.16 25664/79290 fgGetInt(char const *, int) [104] 0.01 0.07 6417/6417 FGEventMgr::update(double) [312] 0.01 0.04 32/32112 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 0.00 0.04 6416/6442 fgGetString(char const *, char const *) [415] 0.00 0.03 19248/19248 ssgSetNearFar(float, float) [466] 0.00 0.03 12833/618817 fgGetDouble(char const *, double) <cycle 2> [708] 0.01 0.02 6416/6416 SGSky::modify_vis(float, float) [531] 0.01 0.01 6416/6416 FGAircraftModel::draw(void) [600] 0.01 0.01 6416/38497 ssgSimpleState::force(void) [270] 0.00 0.01 6416/6416 FGATCDisplay::update(double) [711] 0.01 0.01 12832/3527413 ssgSimpleState::apply(void) [27] 0.00 0.01 6416/12834 ssgSetFOV(float, float) [568] 0.00 0.01 126/132 fgSplashUpdate(double, float) [828] 0.00 0.01 6416/6416 fgUpdate3DPanels(void) [879] 0.01 0.00 6416/12834 FGViewer::get_v_fov(void) [712] 0.00 0.01 6416/6416 ssgSetCamera(float (*)[3]) [916] 0.01 0.00 38496/38497 ssgGetLight(int) [928] 0.00 0.00 6416/6417 ssgLight::setPosition(float const *) [986] 0.00 0.00 6416/6417 SGEphemeris::getStars(void) [1009] 0.00 0.00 6416/6506 FGScenery::get_rwy_lights_root(void) const [1090] 0.00 0.00 6416/6506 FGScenery::get_gnd_lights_root(void) const [1089] 0.00 0.00 6416/6417 FGViewer::get_VIEW(void) [1168] 0.00 0.00 6416/6416 FGControls::update(double) [1196] 0.00 0.00 6416/6417 SGEphemeris::getNumStars(void) const [1193] 0.00 0.00 6416/6456 FGViewer::get_view_pos(void) [1191] 0.00 0.00 51328/57766 FGGlobals::get_ephem(void) const [1180] 0.00 0.00 6416/6416 SGEphemeris::getSunDeclination(void) const [1256] 0.00 0.00 6416/6416 SGEphemeris::getSunRightAscension(void) const [1332] 0.00 0.00 6416/6416 FGModelMgr::draw(void) [1328] 0.00 0.00 6416/6417 SGEphemeris::getNumPlanets(void) const [1326] 0.00 0.00 32080/32080 ssgLight::setColour(unsigned int, float const *) [1395] 0.00 0.00 44944/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 6416/19219 FGScenery::get_next_center(void) const [1052] 0.00 0.00 6416/6416 SGEphemeris::getMoonDeclination(void) const [1427] 0.00 0.00 6416/19757 FGGlobals::get_sim_time_sec(void) const [1084] 0.00 0.00 12832/98624 FGInterface::get_Altitude(void) const [808] 0.00 0.00 6417/788750 FGGlobals::get_current_view(void) const [223] 0.00 0.00 6448/6448 FGScenery::get_scene_graph(void) const [1538] 0.00 0.00 6417/6417 fgUpdateProps(void) [1542] 0.00 0.00 6416/6417 FGGlobals::get_ATC_display(void) const [1544] 0.00 0.00 6416/6431 SGTime::getGst(void) const [1539] 0.00 0.00 212/618817 SGPropertyNode::getDoubleValue(void) const <cycle 2> [264] 0.00 0.00 6416/12832 FGGlobals::get_model_mgr(void) [1529] 0.00 0.00 6416/12834 FGViewer::get_h_fov(void) [1526] 0.00 0.00 6416/12838 FGGlobals::get_aircraft_model(void) [1524] 0.00 0.00 6416/60634 FGGlobals::get_controls(void) const [1112] 0.00 0.00 6416/43755 FGGlobals::get_time_params(void) const [1305] 0.00 0.00 6416/6416 FGScenery::set_center(Point3D) [1821] 0.00 0.00 6416/756171 FGViewer::getAltitudeASL_ft(void) const [551] 0.00 0.00 6416/782273 FGScenery::get_cur_elev(void) const [662] 0.00 0.00 32/12867 sgFrustum::setFOV(float, float) [585] 0.00 0.00 32/33 sgFrustum::sgFrustum(void) [2058] 0.00 0.00 32/19281 sgFrustum::setNearFar(float, float) [508] 0.00 0.00 4/531 fgGetNode(char const *, bool) [1161] 0.00 0.00 32/32 ssgGetModelviewMatrix(float (*)[3]) [2439] 0.00 0.00 6416/6416 SGSky::set_visibility(float) [3137] 0.00 0.00 6416/6417 SGEphemeris::getPlanets(void) [3122] 0.00 0.00 6416/6416 SGEphemeris::getMoonRightAscension(void) const [3129] 0.00 0.00 6416/6416 FGViewer::getLatitude_deg(void) const [3127] 0.00 0.00 6416/6416 FGViewer::getLongitude_deg(void) const [3128] 0.00 0.00 6416/6436 FGViewer::get_world_up(void) [3114] 0.00 0.00 6416/6416 FGViewer::get_zero_elev(void) [3136] 0.00 0.00 6416/6506 FGScenery::get_taxi_lights_root(void) const [3113] 0.00 0.00 1/1 FGGlobals::set_sim_time_sec(double) [4193] ----------------------------------------------- 0.01 10.66 6416/32080 SGSky::preDraw(void) [17] 0.02 42.64 25664/32080 fgRenderFrame(void) [2] [3] 64.4 0.03 53.31 32080 ssgCullAndDraw(ssgRoot *) [3] 0.01 51.11 32080/32080 ssgContext::cull(ssgRoot *) [5] 0.08 1.93 32080/32080 _ssgDrawDList(void) [41] 0.01 0.09 32080/32080 ssgForceBasicState(void) [274] 0.01 0.02 32080/32080 ssgContext::loadProjectionMatrix(void) [553] 0.02 0.00 513280/513280 ssgLight::isHeadlight(void) [596] 0.01 0.00 256640/288720 ssgLight::setup(void) [755] 0.01 0.00 32080/32080 ssgContext::applyClipPlanes(void) [876] 0.00 0.00 32080/32080 _ssgEndOfFrameCleanup(void) [1214] 0.00 0.00 32080/32080 ssgContext::loadModelviewMatrix(void) [1310] 0.00 0.00 32080/32080 ssgContext::removeClipPlanes(void) [1311] 0.00 0.00 32080/32080 _ssgStartOfFrameInit(void) [10443] ----------------------------------------------- [4] 61.8 7.41 43.76 32112+23640003 <cycle 6 as a whole> [4] 4.16 18.28 2996413+96516 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 1.44 15.60 11449174+32080 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 1.72 9.36 8746726 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 0.02 0.05 50479+212 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] ----------------------------------------------- 0.01 51.11 32080/32080 ssgCullAndDraw(ssgRoot *) [3] [5] 61.7 0.01 51.11 32080 ssgContext::cull(ssgRoot *) [5] 7.40 43.71 32080/32112 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] ----------------------------------------------- 96516 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 429323 ssgCutout::cull(sgFrustum *, float (*)[3], int) <cycle 6> [101] 574071 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 1960907 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 0.01 0.04 32/32112 fgRenderFrame(void) [2] 7.40 43.71 32080/32112 ssgContext::cull(ssgRoot *) [5] [6] 27.1 4.16 18.28 2996413+96516 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 0.64 12.72 11302137/11769956 ssgLeaf::cull(sgFrustum *, float (*)[3], int) [14] 0.66 1.83 26116592/45449038 ssgBranch::getNextKid(void) [21] 0.19 1.55 3092929/35003350 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 0.12 0.39 3092929/23800923 ssgEntity::preTravTests(int *, int) [23] 0.05 0.10 2115097/20779133 ssgBranch::getKid(int) [59] 0.04 0.00 2115097/8096716 ssgEntity::postTravTests(int) [224] 11372168 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 3339143 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 6628 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] 96516 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] ----------------------------------------------- 0.00 0.03 50691/35003350 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] 0.19 1.55 3092929/35003350 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 0.54 4.38 8746726/35003350 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 0.70 5.68 11343048/35003350 ssgTansform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 0.73 5.89 11769956/35003350 ssgLeaf::cull(sgFrustum *, float (*)[3], int) [14] [7] 23.7 2.16 17.52 35003350 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 5.84 5.81 26372747/26372747 sgFrustum::contains(sgSphere const *) const [15] 0.79 1.75 26935094/67119697 ssgEntity::getBSphere(void) <cycle 8> [20] 0.58 1.78 26372747/27045892 sgSphere::orthoXform(float const (*)[3]) [38] 0.50 0.00 26935094/32925526 sgSphere::isEmpty(void) const [96] 0.47 0.00 26372747/26372747 ssgContext::isOrtho(void) [108] ----------------------------------------------- 0.00 0.00 1/6416 FGTileMgr::update(double) [1244] 0.01 17.16 6415/6416 fgMainLoop(void) [1] [8] 20.7 0.01 17.17 6416 FGTileMgr::update(FGLocation *, double, double *) [8] 0.01 15.87 6318/6318 FGTileMgr::updateCurrentElevAtPos(double *, Point3D) [10] 0.01 1.25 6416/6416 FGTileMgr::update_queues(void) [66] 0.00 0.02 6416/6886 FGNewCache::get_tile(SGBucket const &) [588] 0.00 0.00 15/30 FGTileMgr::schedule_needed(double, SGBucket) [1049] 0.00 0.00 6415/6415 operator==(SGBucket const &, SGBucket const &) [1365] 0.00 0.00 6318/25666 FGScenery::get_center(void) const [865] 0.00 0.00 6416/69677 SGBucket::set_bucket(double, double) [654] 0.00 0.00 6416/6416 FGScenery::set_next_center(Point3D) [1455] 0.00 0.00 6418/180027 sglog(void) [664] 0.00 0.00 6414/855813 Point3D::Point3D(Point3D const &) [322] 0.00 0.00 12734/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 6418/180026 logstream::operator<<(loglevel const &) [955] 0.00 0.00 1/6417 FGTileLoader::update(void) [67] 0.00 0.00 1/1 FGTileMgr::initialize_queue(void) [1898] 0.00 0.00 6418/180026 loglevel::loglevel(sgDebugClass, sgDebugPriority) [1665] 0.00 0.00 6416/12832 FGLocation::getLongitude_deg(void) const [3083] 0.00 0.00 6416/12832 FGLocation::getLatitude_deg(void) const [3082] 0.00 0.00 2/316 Point3D::Point3D(double) [10647] ----------------------------------------------- 32080 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 6416 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] 70590 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 11372168 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] [9] 20.6 1.44 15.60 11449174+32080 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 0.70 5.68 11343048/35003350 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 0.16 3.26 5501605/5655589 sgPreMultMat4(float (*)[3], float const (*)[3]) [24] 0.43 1.43 11481254/23800923 ssgEntity::preTravTests(int *, int) [23] 0.29 0.96 5501605/5930928 _ssgPushMatrix(float (*)[3]) [63] 0.24 0.44 5501605/19029592 sgCopyMat4(float (*)[3], float const (*)[3]) [39] 0.16 0.45 6481553/45449038 ssgBranch::getNextKid(void) [21] 0.03 0.53 467819/11769956 ssgLeaf::cull(sgFrustum *, float (*)[3], int) [14] 0.14 0.25 5501605/20779133 ssgBranch::getKid(int) [59] 0.30 0.05 5501605/5930928 _ssgPopMatrix(void) [133] 0.09 0.00 5501605/8096716 ssgEntity::postTravTests(int) [224] 5407583 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 574071 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 32080 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] ----------------------------------------------- 0.01 15.87 6318/6318 FGTileMgr::update(FGLocation *, double, double *) [8] [10] 19.2 0.01 15.87 6318 FGTileMgr::updateCurrentElevAtPos(double *, Point3D) [10] 0.01 15.85 6292/6292 fgCurrentElev(double *, double *, FGHitList *, double *, double *, double *) [11] 0.00 0.00 6318/6318 FGScenery::set_cur_radius(double) [1339] 0.00 0.00 18954/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 18954/1007650 Point3D::operator[](int) [683] 0.00 0.00 6318/10107584 sgdSetVec3(double *, double, double, double) [194] 0.00 0.00 6318/6318 FGScenery::set_cur_normal(double *) [2050] 0.00 0.00 6318/6318 FGScenery::set_cur_elev(double) [3157] ----------------------------------------------- 0.01 15.85 6292/6292 FGTileMgr::updateCurrentElevAtPos(double *, Point3D) [10] [11] 19.1 0.01 15.85 6292 fgCurrentElev(double *, double *, FGHitList *, double *, double *, double *) [11] 0.00 15.82 6292/6292 FGHitList::Intersect(ssgBranch *, double *, double *) [12] 0.01 0.00 6292/16526 sgGeocToGeod(double, double, double *, double *, double *) [642] 0.00 0.00 6292/6292 FGHitList::num_hits(void) [1028] 0.00 0.00 6292/16526 sgCartToPolar3d(Point3D const &) [724] 0.00 0.00 6292/12708 sgSetVec3(float *, double *) [1087] 0.00 0.00 6292/6382 FGScenery::get_terrain_branch(void) const [1338] 0.00 0.00 6292/6292 FGHitList::get_point(int) [1428] 0.00 0.00 6292/6292 operator+(Point3D const &, double const *) [1735] 0.00 0.00 6292/6292 FGHitList::get_normal(int) [1744] 0.00 0.00 6292/735761 Point3D::operator=(Point3D const &) [513] 0.00 0.00 6292/110376 Point3D::Point3D(void) [1069] 0.00 0.00 6292/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 6292/23797136 sgdSubVec3(double *, double const *, double const *) [93] 0.00 0.00 12584/325326 Point3D::radius(void) const [1071] 0.00 0.00 6292/546113 Point3D::Point3D(double, double, double) [741] 0.00 0.00 6292/5742345 sgdSetVec3(double *, float *) [247] 0.00 0.00 12584/844565 sgdCopyVec3(double *, double const *) [869] 0.00 0.00 6292/245016 Point3D::lat(void) const [1368] ----------------------------------------------- 0.00 15.82 6292/6292 fgCurrentElev(double *, double *, FGHitList *, double *, double *, double *) [11] [12] 19.1 0.00 15.82 6292 FGHitList::Intersect(ssgBranch *, double *, double *) [12] 2.23 13.59 6292/6292 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 0.00 0.01 6292/6293 FGHitList::clear(void) [957] 0.00 0.00 6292/6292 sgdMakeIdentMat4(double (*)[3]) [1203] ----------------------------------------------- 494914 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 2.23 13.59 6292/6292 FGHitList::Intersect(ssgBranch *, double *, double *) [12] [13] 19.1 2.23 13.59 6292+494914 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 0.43 3.75 53980/53980 FGHitList::IntersectLeaf(ssgLeaf *, double (*)[3], double *, double *, unsigned int) [22] 1.18 2.61 40174352/67119697 ssgEntity::getBSphere(void) <cycle 8> [20] 0.24 0.85 10043588/10043588 sgdXformPnt3(double *, double const (*)[3]) [76] 0.25 0.70 10043588/45449038 ssgBranch::getNextKid(void) [21] 0.75 0.00 10043588/33844511 ssgEntity::getTraversalMask(void) [36] 0.54 0.00 20087176/41281058 sgdScalarProductVec3(double const *, double const *) [75] 0.53 0.00 20087176/23797136 sgdSubVec3(double *, double const *, double const *) [93] 0.25 0.27 10043588/10043588 IN_RANGE(double *, double) [102] 0.35 0.00 30130764/171630869 sgSphere::getCenter(void) const [42] 0.20 0.00 10043588/11892214 sgdScaleVec3(double *, double const *, double) [166] 0.18 0.00 10043588/10107584 sgdSetVec3(double *, double, double, double) [194] 0.16 0.00 10043588/154571808 sgSphere::getRadius(void) const [37] 0.03 0.05 453627/453627 sgdCopyMat4(double (*)[3], double const (*)[3]) [315] 0.01 0.04 494914/579975 ssgTypeTransform(void) [368] 0.04 0.00 41287/41287 sgMultMat4(double (*)[3], double (*)[3], float (*)[3]) [417] 0.01 0.02 602874/618694 ssgBase::isAKindOf(int) [447] 0.01 0.02 501206/20779133 ssgBranch::getKid(int) [59] 0.01 0.02 494914/495543 ssgBase::isA(int) [467] 0.01 0.03 548894/1491860 ssgTypeBranch(void) [280] 0.00 0.01 41287/41315 ssgBaseTransform::getTransform(float (*)[3]) [833] 0.01 0.00 9042/9042 sgdTransposeNegateMat4(double (*)[3], double const (*)[3]) [849] 0.00 0.00 53980/90525 ssgTypeLeaf(void) [975] 0.00 0.00 18084/10067964 sgdXformPnt3(double *, double const *, double const (*)[3]) [82] 0.00 0.00 53980/210011 ssgLeaf::getPrimitiveType(void) [1000] 494914 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] ----------------------------------------------- 0.03 0.53 467819/11769956 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 0.64 12.72 11302137/11769956 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] [14] 16.8 0.67 13.25 11769956 ssgLeaf::cull(sgFrustum *, float (*)[3], int) [14] 0.73 5.89 11769956/35003350 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 0.34 5.64 2749889/3476085 ssgVtxTable::draw(void) [18] 0.24 0.34 3476085/3476085 ssgLeaf::isTranslucent(void) [97] 0.05 0.02 726196/726196 _ssgDrawLeaf(ssgLeaf *) [316] ----------------------------------------------- 5.84 5.81 26372747/26372747 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] [15] 14.1 5.84 5.81 26372747 sgFrustum::contains(sgSphere const *) const [15] 2.24 0.00 141712672/154571808 sgSphere::getRadius(void) const [37] 1.95 0.00 74616760/83039779 sgScalarProductVec3(float const *, float const *) [40] 1.62 0.00 138373958/171630869 sgSphere::getCenter(void) const [42] ----------------------------------------------- 3339143 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 5407583 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] [16] 13.4 1.72 9.36 8746726 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 0.54 4.38 8746726/35003350 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 1.66 0.00 4367971/4554070 ssgSelector::select(unsigned int) [45] 0.33 1.09 8746726/23800923 ssgEntity::preTravTests(int *, int) [23] 0.29 0.51 11240530/20779133 ssgBranch::getKid(int) [59] 0.21 0.30 6872642/8325800 sgLengthVec3(float const *) [94] 0.06 0.00 2504671/2504671 ssgSelector::selectStep(unsigned int) [357] 1960907 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 429323 ssgCutout::cull(sgFrustum *, float (*)[3], int) <cycle 6> [101] 70590 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 43851 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] ----------------------------------------------- 0.00 10.67 6416/6416 fgRenderFrame(void) [2] [17] 12.9 0.00 10.67 6416 SGSky::preDraw(void) [17] 0.01 10.66 6416/32080 ssgCullAndDraw(ssgRoot *) [3] ----------------------------------------------- 0.09 1.49 726196/3476085 _ssgDList::draw(void) [43] 0.34 5.64 2749889/3476085 ssgLeaf::cull(sgFrustum *, float (*)[3], int) [14] [18] 9.1 0.43 7.13 3476085 ssgVtxTable::draw(void) [18] 0.80 1.97 3476085/3476085 ssgVtxTable::draw_geometry(void) [30] 0.14 2.42 2553026/2553026 ssgStateSelector::apply(void) [35] 0.43 0.40 923059/3527413 ssgSimpleState::apply(void) [27] 0.20 0.29 3476085/3476085 ssgLeaf::preDraw(void) [105] 0.09 0.19 3476085/19154123 ssgVtxTable::getNumVertices(void) [55] 0.11 0.00 3476085/3514581 ssgLeaf::hasState(void) [259] 0.10 0.00 3476085/3515478 ssgLeaf::getState(void) [267] 0.00 0.00 12832/12832 sgStarPostDraw(ssgEntity *) [1530] 0.00 0.00 25664/25664 sgSkyDomePostDraw(ssgEntity *) [3046] ----------------------------------------------- [19] 7.6 1.97 4.36 67119697+5191600 <cycle 8 as a whole> [19] 1.81 3.20 69787327 ssgEntity::getBSphere(void) <cycle 8> [20] 0.12 1.07 1348572 ssgBranch::recalcBSphere(void) <cycle 8> [72] ----------------------------------------------- 2667647 ssgBranch::recalcBSphere(void) <cycle 8> [72] 0.00 0.00 10234/67119697 gen_random_surface_objects(ssgLeaf *, ssgBranch *, Point3D *, basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [202] 0.79 1.75 26935094/67119697 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] 1.18 2.61 40174352/67119697 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] [20] 6.0 1.81 3.20 69787327 ssgEntity::getBSphere(void) <cycle 8> [20] 3.20 0.00 69787327/69787344 ssgEntity::isDirtyBSphere(void) [25] 0.00 0.00 29315/29315 DummyBSphereEntity::recalcBSphere(void) [1511] 1175391 ssgTransform::recalcBSphere(void) <cycle 8> [237] 173164 ssgBranch::recalcBSphere(void) <cycle 8> [72] ----------------------------------------------- 0.00 0.00 14/45449038 ssgFlatten(ssgEntity *) [1728] 0.00 0.00 309/45449038 strip(ssgEntity *) [1971] 0.00 0.00 324/45449038 ssgStripify(ssgEntity *) [405] 0.00 0.00 618/45449038 flatten(ssgBranch *, ssgEntity *, float (*)[3]) [1754] 0.00 0.01 138393/45449038 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] 0.07 0.19 2667647/45449038 ssgBranch::recalcBSphere(void) <cycle 8> [72] 0.16 0.45 6481553/45449038 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 0.25 0.70 10043588/45449038 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 0.66 1.83 26116592/45449038 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] [21] 5.2 1.15 3.19 45449038 ssgBranch::getNextKid(void) [21] 1.13 2.06 45449038/45449038 ssgList::getNextEntity(void) [26] ----------------------------------------------- 0.43 3.75 53980/53980 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] [22] 5.1 0.43 3.75 53980 FGHitList::IntersectLeaf(ssgLeaf *, double (*)[3], double *, double *, unsigned int) [22] 0.32 1.25 5736053/5947250 ssgVtxTable::getVertex(int) [53] 0.05 1.17 1848626/1848626 sgdMakePlane(double *, double const *, double const *, double const *) [69] 0.13 0.11 1848626/1848626 sgdDistanceSquaredVec3(double const *, double const *) [167] 0.09 0.12 2215365/2215365 isZeroAreaTri(double (*)[2]) [175] 0.07 0.10 1074144/1074144 fgdPointInTriangle(double *, double (*)[2]) [201] 0.12 0.00 5736053/5742345 sgdSetVec3(double *, float *) [247] 0.10 0.00 3697252/41281058 sgdScalarProductVec3(double const *, double const *) [75] 0.04 0.00 1848626/11892214 sgdScaleVec3(double *, double const *, double) [166] 0.03 0.00 1848626/1848626 sgdAbs(double) [504] 0.02 0.00 1074144/1074144 sgdAddVec3(double *, double const *) [616] 0.01 0.01 53980/89834 ssgVtxTable::getNumTriangles(void) [591] 0.00 0.01 6292/6292 FGHitList::add(ssgEntity *, int, double *, double *) [802] 0.01 0.00 819246/844565 sgdCopyVec3(double *, double const *) [869] 0.00 0.00 6292/6292 sgdXformPnt4(double *, double const *, double const (*)[3]) [1098] 0.00 0.00 6292/10067964 sgdXformPnt3(double *, double const *, double const (*)[3]) [82] ----------------------------------------------- 0.00 0.01 50691/23800923 ssgSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [319] 0.02 0.05 429323/23800923 ssgCutout::cull(sgFrustum *, float (*)[3], int) <cycle 6> [101] 0.12 0.39 3092929/23800923 ssgBranch::cull(sgFrustum *, float (*)[3], int) <cycle 6> [6] 0.33 1.09 8746726/23800923 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] 0.43 1.43 11481254/23800923 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] [23] 4.7 0.89 2.97 23800923 ssgEntity::preTravTests(int *, int) [23] 1.78 0.00 23800923/33844511 ssgEntity::getTraversalMask(void) [36] 0.06 0.40 460939/460939 tri_in_range_callback(ssgEntity *, int) [111] 0.15 0.22 1436165/1436165 leaf_in_range_callback(ssgEntity *, int) [134] 0.01 0.35 138206/138206 runway_lights_pretrav(ssgEntity *, int) [136] ----------------------------------------------- 0.00 0.00 6416/5655589 ssgContext::setCamera(float (*)[3]) [915] 0.00 0.01 12832/5655589 SGStars::reposition(float *, double) [429] 0.00 0.01 19248/5655589 SGSkyDome::reposition(float *, double, double, double) [472] 0.00 0.02 25664/5655589 SGMoon::reposition(float *, double, double, double, double) [450] 0.00 0.02 25664/5655589 SGSun::reposition(float *, double, double, double, double) [461] 0.00 0.04 64160/5655589 SGCloudLayer::reposition(float *, float *, double, double, double) [176] 0.16 3.26 5501605/5655589 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] [24] 4.3 0.17 3.35 5655589 sgPreMultMat4(float (*)[3], float const (*)[3]) [24] 2.65 0.00 5655589/5662019 sgMultMat4(float (*)[3], float const (*)[3], float const (*)[3]) [34] 0.25 0.45 5655589/19029592 sgCopyMat4(float (*)[3], float const (*)[3]) [39] ----------------------------------------------- 0.00 0.00 7/69787344 ssgFlatten(ssgEntity *) [1728] 0.00 0.00 10/69787344 strip(ssgEntity *) [1971] 3.20 0.00 69787327/69787344 ssgEntity::getBSphere(void) <cycle 8> [20] [25] 3.9 3.20 0.00 69787344 ssgEntity::isDirtyBSphere(void) [25] ----------------------------------------------- 1.13 2.06 45449038/45449038 ssgBranch::getNextKid(void) [21] [26] 3.8 1.13 2.06 45449038 ssgList::getNextEntity(void) [26] 2.06 0.00 45449038/67381320 ssgList::getEntity(unsigned int) [28] ----------------------------------------------- 0.01 0.01 12832/3527413 fgRenderFrame(void) [2] 0.01 0.01 12832/3527413 sgStarPreDraw(ssgEntity *) [698] 0.01 0.01 25664/3527413 sgSkyDomePreDraw(ssgEntity *) [530] 0.43 0.40 923059/3527413 ssgVtxTable::draw(void) [18] 1.18 1.11 2553026/3527413 ssgStateSelector::apply(void) [35] [27] 3.8 1.62 1.53 3527413 ssgSimpleState::apply(void) [27] 0.57 0.00 38351566/38890517 ssgContext::getState(void) [98] 0.31 0.00 9582188/9889814 sgEqualVec3(float const *, float const *) [146] 0.11 0.00 7196082/7228162 ssgSimpleState::getTexture(void) [261] 0.02 0.07 320904/353399 ssgSimpleState::setTexture(ssgTexture *) [265] 0.09 0.00 3527413/3565910 ssgState::preApply(void) [278] 0.09 0.00 3502363/3502363 enable_00(void) [287] 0.08 0.00 2553026/2553598 sgEqualVec4(float const *, float const *) [302] 0.07 0.00 3508129/3508129 disable_00(void) [324] 0.06 0.00 3527413/3565910 ssgState::preDraw(void) [337] 0.02 0.02 320904/353564 ssgSimpleState::getTextureHandle(void) [418] 0.00 0.00 235716/5493085 sgCopyVec3(float *, float const *) [257] 0.00 0.00 18628/18628 enable_08(void) [1085] 0.00 0.00 150793/77163078 sgCopyVec4(float *, float const *) [56] 0.00 0.00 6416/6416 disable_50(void) [1546] 0.00 0.00 6391/6391 enable_01(void) [1565] 0.00 0.00 6422/6422 disable_16(void) [3115] 0.00 0.00 6416/6416 disable_34(void) [3124] 0.00 0.00 31/31 enable_09(void) [3574] 0.00 0.00 30/30 disable_08(void) [3577] ----------------------------------------------- 0.05 0.00 1153149/67381320 ssgEntity::getParent(int) [291] 0.94 0.00 20779133/67381320 ssgBranch::getKid(int) [59] 2.06 0.00 45449038/67381320 ssgList::getNextEntity(void) [26] [28] 3.7 3.05 0.00 67381320 ssgList::getEntity(unsigned int) [28] ----------------------------------------------- 0.00 0.00 1/479427 FGFX::init(void) [1804] 0.00 0.00 1/479427 SGPropertyNode::setLongValue(char const *, long) [2383] 0.00 0.00 2/479427 fgInitLocale(char const *) [1862] 0.00 0.00 2/479427 SGPropertyNode::tie(char const *, SGRawValue<long> const &, bool) [2301] 0.00 0.00 10/479427 SGPropertyNode::tie(char const *, SGRawValue<char const *> const &, bool) [1982] 0.00 0.00 12/479427 SGPropertyNode::setFloatValue(char const *, float) [1993] 0.00 0.00 21/479427 SGPropertyNode::tie(char const *, SGRawValue<int> const &, bool) [1923] 0.00 0.00 27/479427 SGPropertyNode::setBoolValue(char const *, bool) [1885] 0.00 0.00 51/479427 SGPropertyNode::setDoubleValue(char const *, double) [1780] 0.00 0.00 77/479427 SGPropertyNode::tie(char const *, SGRawValue<bool> const &, bool) [1752] 0.00 0.00 95/479427 initMenu(void) [1149] 0.00 0.00 158/479427 SGPropertyNode::tie(char const *, SGRawValue<double> const &, bool) [1468] 0.00 0.00 174/479427 SGPropertyNode::alias(char const *) [1484] 0.00 0.00 183/479427 fgSetArchivable(char const *, bool) [1477] 0.00 0.00 531/479427 fgGetNode(char const *, bool) [1161] 0.00 0.04 6429/479427 SGPropertyNode::setStringValue(char const *, char const *) [379] 0.00 0.07 12845/479427 SGPropertyNode::setIntValue(char const *, int) [296] 0.04 2.67 458808/479427 SGPropertyNode::getNode(char const *) const [31] [29] 3.4 0.04 2.79 479427 SGPropertyNode::getNode(char const *, bool) [29] 0.02 1.25 35291/35291 parse_path(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &, vector<PathComponent, allocator<PathComponent> > &) [65] 0.03 0.95 35291/35291 find_node(SGPropertyNode *, vector<PathComponent, allocator<PathComponent> > const &, int, bool) [77] 0.13 0.29 479427/479427 SGPropertyNode::hash_table::get(char const *) [114] 0.00 0.04 35291/276542 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::basic_string(char const *) [137] 0.00 0.03 35291/35291 vector<PathComponent, allocator<PathComponent> >::~vector(void) [511] 0.01 0.00 6878/6878 SGPropertyNode::hash_table::put(char const *, SGPropertyNode *) [779] 0.00 0.01 35291/35291 vector<PathComponent, allocator<PathComponent> >::vector(allocator<PathComponent> const &) [787] 0.00 0.00 35291/35291 allocator<PathComponent>::~allocator(void) [1023] 0.00 0.00 35291/947208 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::~basic_string(void) [236] 0.00 0.00 35291/35291 allocator<PathComponent>::allocator(void) [1229] 0.00 0.00 1606/1606 SGPropertyNode::hash_table::hash_table(void) [1662] ----------------------------------------------- 0.80 1.97 3476085/3476085 ssgVtxTable::draw(void) [18] [30] 3.3 0.80 1.97 3476085 ssgVtxTable::draw_geometry(void) [30] 0.12 0.19 3476085/3480229 ssgVtxTable::getNumColours(void) [148] 0.09 0.19 3476085/3476085 ssgVtxTable::getNumNormals(void) [154] 0.09 0.19 3476085/19154123 ssgVtxTable::getNumVertices(void) [55] 0.07 0.19 3476085/3479193 ssgVtxTable::getNumTexCoords(void) [157] 0.14 0.11 3437589/3564963 ssgTexCoordArray::get(unsigned int) [161] 0.10 0.11 3476085/4210062 ssgColourArray::get(unsigned int) [162] 0.09 0.11 3476085/9650703 ssgVertexArray::get(unsigned int) [99] 0.07 0.11 3437589/3437589 ssgNormalArray::get(unsigned int) [189] ----------------------------------------------- 0.00 0.00 16/458808 readInstrument(SGPropertyNode const *) [1245] 0.00 0.00 56/458808 readInstrument(SGPropertyNode const *) [314] 0.00 0.00 114/458808 SGPropertyNode::hasValue(char const *) const [1704] 0.00 0.00 297/458808 readTransformation(SGPropertyNode const *, float, float) [611] 0.00 0.00 448/458808 readLayer(SGPropertyNode const *, float, float) [444] 0.00 0.05 8505/458808 SGPropertyNode::getFloatValue(char const *, float) const [351] 0.00 0.05 8845/458808 SGPropertyNode::getStringValue(char const *, char const *) const [345] 0.00 0.47 80447/458808 SGPropertyNode::getIntValue(char const *, int) const [103] 0.00 0.80 136257/458808 SGPropertyNode::getBoolValue(char const *, bool) const [81] 0.01 1.32 223823/458808 SGPropertyNode::getDoubleValue(char const *, double) const <cycle 2> [64] [31] 3.3 0.01 2.70 458808 SGPropertyNode::getNode(char const *) const [31] 0.04 2.67 458808/479427 SGPropertyNode::getNode(char const *, bool) [29] ----------------------------------------------- <spontaneous> [32] 3.2 0.00 2.66 fgIdleFunction(void) [32] 0.00 2.66 1/1 fgInitSubsystems(void) [33] 0.00 0.00 6/132 fgSplashUpdate(double, float) [828] 0.00 0.00 1/1 fgSplashInit(void) [2011] 0.00 0.00 8/135571 fgGetBool(char const *, bool) [80] 0.00 0.00 1/6417 fgReshape(int, int) [164] 0.00 0.00 1/1 fgInitVisuals(void) [2107] 0.00 0.00 2/79290 fgGetInt(char const *, int) [104] 0.00 0.00 1/12836 fgPanelVisible(void) [597] 0.00 0.00 1/180027 sglog(void) [664] 0.00 0.00 1/180026 logstream::operator<<(loglevel const &) [955] 0.00 0.00 1/180026 loglevel::loglevel(sgDebugClass, sgDebugPriority) [1665] ----------------------------------------------- 0.00 2.66 1/1 fgIdleFunction(void) [32] [33] 3.2 0.00 2.66 1 fgInitSubsystems(void) [33] 0.00 1.42 1/1 FGMaterialLib::load(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [60] 0.00 0.49 1/1 FGNavList::init(SGPath) [106] 0.01 0.39 1/1 FGFixList::init(SGPath) [121] 0.00 0.17 1/1 fgReadPanel(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [198] 0.00 0.05 1/1 FGILSList::init(SGPath) [370] 0.00 0.05 1/1 FGSubsystemMgr::init(void) [381] 0.00 0.05 1/1 FGATISList::init(SGPath) [416] 0.00 0.01 1/1 FGPanel::init(void) [689] 0.00 0.00 1/1 fgCockpitInit(fgAIRCRAFT *) [1156] 0.00 0.00 1/1 FGTileMgr::update(double) [1244] 0.00 0.00 1/1 FGRadioStack::init(void) [1247] 0.00 0.00 1/1 FGATCMgr::FGATCMgr(void) [1450] 0.00 0.00 1/1 FGControls::bind(void) [1671] 0.00 0.00 1/1 FGInput::FGInput(void) [1672] 0.00 0.00 1/1 FGRadioStack::bind(void) [1700] 0.00 0.00 3/3 void FGEventMgr::Register<void (*)(void)>(char const *, void (*)(void) const &, int, int) [1712] 0.00 0.00 1/1 FGRadioStack::FGRadioStack(void) [1716] 0.00 0.00 1/1 FGEnvironmentMgr::bind(void) [1751] 0.00 0.00 1/1 fgAPAdjustInit(void) [1763] 0.00 0.00 1/1 FGApproachList::init(SGPath) [1817] 0.00 0.00 1/1 FGAutopilot::init(void) [1841] 0.00 0.00 1/1 FGGlobals::saveInitialState(void) [1854] 0.00 0.00 1/1 void FGEventMgr::Register<FGEventMgr *, void (FGEventMgr::*)(FGEventMgr const *) const>(char const *, FGEventMgr * const &, void (FGEventMgr::*)(FGEventMgr const *) const, int, int) [1855] 0.00 0.00 1/1 void FGEventMgr::Register<FGTileMgr *, void (FGTileMgr::*)(FGTileMgr *)>(char const *, FGTileMgr * const &, void (FGTileMgr::*)(FGTileMgr *), int, int) [1858] 0.00 0.00 1/1 void FGEventMgr::Register<fgLIGHT *, void (fgLIGHT::*)(fgLIGHT *)>(char const *, fgLIGHT * const &, void (fgLIGHT::*)(fgLIGHT *), int, int) [1857] 0.00 0.00 1/1 FGATCMgr::init(void) [1860] 0.00 0.00 1/1 fgLIGHT::Init(void) [1884] 0.00 0.00 1/1 FGAutopilot::bind(void) [1886] 0.00 0.00 1/1 NewTgtAirportInit(void) [1887] 0.00 0.00 1/1 fgInitProps(void) [1931] 0.00 0.00 1/1 FGSteam::bind(void) [1932] 0.00 0.00 7/656 SGPath::append(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [769] 0.00 0.00 7/386 SGPath::SGPath(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [971] 0.00 0.00 1/1 NewAltitudeInit(void) [1950] 0.00 0.00 1/1 NewHeadingInit(void) [1963] 0.00 0.00 1/1 FGTowerList::init(SGPath) [2000] 0.00 0.00 1/1 fgInitView(void) [2029] 0.00 0.00 1/1 FGIO::init(void) [2069] 0.00 0.00 1/1 FGSteam::init(void) [2096] 0.00 0.00 1/1 FGEnvironmentMgr::init(void) [2109] 0.00 0.00 1/1 fgInitFDM(void) [2194] 0.00 0.00 1/1 FGPanel::bind(void) [2210] 0.00 0.00 6/6 FGSubsystemMgr::add(FGSubsystemMgr::GroupType, basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &, FGSubsystem *, double) [2234] 0.00 0.00 14/276542 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::basic_string(char const *) [137] 0.00 0.00 3/531 fgGetNode(char const *, bool) [1161] 0.00 0.00 7/766 SGPath::~SGPath(void) [1474] 0.00 0.00 1/6442 fgGetString(char const *, char const *) [415] 0.00 0.00 1/135571 fgGetBool(char const *, bool) [80] 0.00 0.00 1/1 FGControls::init(void) [2396] 0.00 0.00 1/8 fgLIGHT::Update(void) [2066] 0.00 0.00 1/5 fgUpdateSunPos(void) [2178] 0.00 0.00 1/5 fgUpdateMoonPos(void) [2184] 0.00 0.00 1/618817 fgGetDouble(char const *, double) <cycle 2> [708] 0.00 0.00 1/1 FGTileMgr::init(void) [2517] 0.00 0.00 15/947208 basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::~basic_string(void) [236] 0.00 0.00 1/1 FGAutopilot::FGAutopilot(void) [2535] 0.00 0.00 1/1 FGSubsystemMgr::bind(void) [2557] 0.00 0.00 1/1 FGEventMgr::init(void) [2611] 0.00 0.00 8/6423 FGGlobals::get_subsystem_mgr(void) const [1540] 0.00 0.00 14/180027 sglog(void) [664] 0.00 0.00 1/1 FGMarkerBeacons::FGMarkerBeacons(void) [2653] 0.00 0.00 6/378 SGPath::SGPath(SGPath const &) [2033] 0.00 0.00 2/6418 FGGlobals::get_io(void) const [1325] 0.00 0.00 1/1 FGSoundMgr::FGSoundMgr(void) [2740] 0.00 0.00 14/180026 logstream::operator<<(loglevel const &) [955] 0.00 0.00 1/1 FGFixList::FGFixList(void) [2752] 0.00 0.00 1/1 FGNavList::FGNavList(void) [2788] 0.00 0.00 1/1 FGATISList::FGATISList(void) [2786] 0.00 0.00 1/1 FGApproachList::FGApproachList(void) [2787] 0.00 0.00 2/6417 FGGlobals::get_environment_mgr(void) [1545] 0.00 0.00 2/7883 FGGlobals::get_autopilot(void) const [1536] 0.00 0.00 3/12833 FGGlobals::get_tile_mgr(void) const [1527] 0.00 0.00 1/1 FGSoundMgr::init(void) [2836] 0.00 0.00 1/1 fgAircraftInit(void) [2861] 0.00 0.00 1/1 NewGUI::NewGUI(void) [2896] 0.00 0.00 1/1 FGTowerList::FGTowerList(void) [2892] 0.00 0.00 1/1 FGILSList::FGILSList(void) [2936] 0.00 0.00 1/812 SGPath::str(void) const [1925] 0.00 0.00 1/6417 FGGlobals::get_ATC_display(void) const [1544] 0.00 0.00 1/1 FGATCDisplay::FGATCDisplay(void) [2961] 0.00 0.00 2/60634 FGGlobals::get_controls(void) const [1112] 0.00 0.00 1/1725 ostream & operator<<<char, string_char_traits<char>, __default_alloc_template<true, 0> >(ostream &, basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [1891] 0.00 0.00 14/180026 loglevel::loglevel(sgDebugClass, sgDebugPriority) [1665] 0.00 0.00 1/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 1/782273 FGScenery::get_cur_elev(void) const [662] 0.00 0.00 7/183 FGGlobals::get_fg_root(void) const [3406] 0.00 0.00 2/22687 FGGlobals::get_soundmgr(void) const [3052] 0.00 0.00 2/6391 FGGlobals::get_steam(void) const [3152] 0.00 0.00 1/1 FGLogger::FGLogger(void) [11314] 0.00 0.00 1/1 FGMarkerBeacons::init(void) [4109] 0.00 0.00 1/1 FGGlobals::set_ATC_display(FGATCDisplay *) [4152] 0.00 0.00 1/1 FGATCDisplay::init(void) [4108] 0.00 0.00 1/1 FGGlobals::set_ATC_mgr(FGATCMgr *) [4153] 0.00 0.00 1/6416 FGGlobals::get_ATC_mgr(void) const [3132] 0.00 0.00 1/1 FGGlobals::set_soundmgr(FGSoundMgr *) [4194] 0.00 0.00 1/1 FGSoundMgr::bind(void) [3934] 0.00 0.00 1/1 FGFX::FGFX(void) [11293] 0.00 0.00 1/1 FGInstrumentMgr::FGInstrumentMgr(void) [11284] 0.00 0.00 1/1 FGSystemMgr::FGSystemMgr(void) [11274] 0.00 0.00 1/1 FGGlobals::set_autopilot(FGAutopilot *) [4164] 0.00 0.00 1/1 FGIO::bind(void) [3940] ----------------------------------------------- 0.00 0.00 7/5662019 make_offsets_matrix(float (*)[3][3], double, double, double, double, double, double) [2329] 0.00 0.00 6423/5662019 sgPostMultMat4(float (*)[3], float const (*)[3]) [1039] 2.65 0.00 5655589/5662019 sgPreMultMat4(float (*)[3], float const (*)[3]) [24] [34] 3.2 2.66 0.00 5662019 sgMultMat4(float (*)[3], float const (*)[3], float const (*)[3]) [34] ----------------------------------------------- 0.14 2.42 2553026/2553026 ssgVtxTable::draw(void) [18] [35] 3.1 0.14 2.42 2553026 ssgStateSelector::apply(void) [35] 1.18 1.11 2553026/3527413 ssgSimpleState::apply(void) [27] 0.13 0.00 2553026/5106052 ssgStateSelector::getCurrentStep(void) [160] ----------------------------------------------- 0.75 0.00 10043588/33844511 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 1.78 0.00 23800923/33844511 ssgEntity::preTravTests(int *, int) [23] [36] 3.1 2.53 0.00 33844511 ssgEntity::getTraversalMask(void) [36] ----------------------------------------------- 0.00 0.00 10234/154571808 gen_random_surface_objects(ssgLeaf *, ssgBranch *, Point3D *, basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [202] 0.04 0.00 2805314/154571808 sgSphere::extend(sgSphere const *) [95] 0.16 0.00 10043588/154571808 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 2.24 0.00 141712672/154571808 sgFrustum::contains(sgSphere const *) const [15] [37] 2.9 2.44 0.00 154571808 sgSphere::getRadius(void) const [37] ----------------------------------------------- 0.01 0.05 673145/27045892 ssgTransform::recalcBSphere(void) <cycle 8> [237] 0.58 1.78 26372747/27045892 ssgEntity::cull_test(sgFrustum *, float (*)[3], int) [7] [38] 2.9 0.59 1.83 27045892 sgSphere::orthoXform(float const (*)[3]) [38] 1.83 0.00 27045892/27045892 sgXformPnt3(float *, float const *, float const (*)[3]) [44] ----------------------------------------------- 0.00 0.00 1/19029592 ssgContext::ssgContext(void) [2345] 0.00 0.00 32/19029592 ssgContext::getModelviewMatrix(float (*)[3]) [2438] 0.00 0.00 6415/19029592 FGModelPlacement::update(void) [336] 0.00 0.00 6416/19029592 FGViewer::updateFromModelLocation(FGLocation *) [1040] 0.00 0.00 6416/19029592 FGViewer::copyLocationData(void) [706] 0.00 0.00 6416/19029592 SGSkyDome::reposition(float *, double, double, double) [472] 0.00 0.00 6416/19029592 SGMoon::reposition(float *, double, double, double, double) [450] 0.00 0.00 6416/19029592 SGSun::reposition(float *, double, double, double, double) [461] 0.00 0.00 6416/19029592 ssgContext::setCamera(float (*)[3]) [915] 0.00 0.00 6423/19029592 sgPostMultMat4(float (*)[3], float const (*)[3]) [1039] 0.00 0.00 12832/19029592 SGStars::reposition(float *, double) [429] 0.00 0.00 32080/19029592 SGCloudLayer::reposition(float *, float *, double, double, double) [176] 0.00 0.00 41315/19029592 ssgBaseTransform::getTransform(float (*)[3]) [833] 0.00 0.01 90299/19029592 ssgTransform::setTransform(float (*)[3]) [385] 0.02 0.03 429323/19029592 ssgCutout::cull(sgFrustum *, float (*)[3], int) <cycle 6> [101] 0.06 0.10 1284254/19029592 ssgBaseTransform::updateTransform(void) [169] 0.08 0.14 1731906/19029592 _ssgDList::setLoadMatrix(float (*)[3]) [163] 0.19 0.33 4199022/19029592 _ssgDList::setPushMatrix(float (*)[3]) [88] 0.24 0.44 5501605/19029592 ssgTransform::cull(sgFrustum *, float (*)[3], int) <cycle 6> [9] 0.25 0.45 5655589/19029592 sgPreMultMat4(float (*)[3], float const (*)[3]) [24] [39] 2.8 0.84 1.51 19029592 sgCopyMat4(float (*)[3], float const (*)[3]) [39] 1.51 0.00 76118368/77163078 sgCopyVec4(float *, float const *) [56] ----------------------------------------------- 0.00 0.00 15/83039779 fgUpdateMoonPos(void) [2184] 0.00 0.00 15/83039779 fgUpdateSunPos(void) [2178] 0.00 0.00 12852/83039779 sgmap_vec_onto_cur_surface_plane(float *, float *, float *, float *) [1401] 0.00 0.00 19248/83039779 sgTransposeNegateMat4(float (*)[3], float const (*)[3]) [1423] 0.00 0.00 65089/83039779 sgTriArea(float *, float *, float *) [355] 0.22 0.00 8325800/83039779 sgLengthVec3(float const *) [94] 1.95 0.00 74616760/83039779 sgFrustum::contains(sgSphere const *) const [15] [40] 2.6 2.17 0.00 83039779 sgScalarProductVec3(float const *, float const *) [40] ----------------------------------------------- 0.08 1.93 32080/32080 ssgCullAndDraw(ssgRoot *) [3] [41] 2.4 0.08 1.93 32080 _ssgDrawDList(void) [41] 0.23 1.70 4090182/4090182 _ssgDList::draw(void) [43] ----------------------------------------------- 0.04 0.00 3126147/171630869 sgSphere::extend(sgSphere const *) [95] 0.35 0.00 30130764/171630869 FGHitList::IntersectBranch(ssgBranch *, double (*)[3], double *, double *) [13] 1.62 0.00 138373958/171630869 sgFrustum::contains(sgSphere const *) const [15] [42] 2.4 2.00 0.00 171630869 sgSphere::getCenter(void) const [42] ----------------------------------------------- 0.23 1.70 4090182/4090182 _ssgDrawDList(void) [41] [43] 2.3 0.23 1.70 4090182 _ssgDList::draw(void) [43] 0.09 1.49 726196/3476085 ssgVtxTable::draw(void) [18] 0.12 0.00 4090182/4098374 _ssgDList::setEmpty(void) [243] ----------------------------------------------- 1.83 0.00 27045892/27045892 sgSphere::orthoXform(float const (*)[3]) [38] [44] 2.2 1.83 0.00 27045892 sgXformPnt3(float *, float const *, float const (*)[3]) [44] ----------------------------------------------- 0.00 0.00 19/4554070 ssgTimedSelector::ssgTimedSelector(int) [2239] 0.00 0.00 6415/4554070 FGModelPlacement::setVisible(bool) [1055] 0.00 0.00 6416/4554070 FGAircraftModel::draw(void) [600] 0.00 0.00 12832/4554070 SGSky::enable(void) [1034] 0.06 0.00 160417/4554070 FGTileEntry::prep_ssg_node(Point3D const &, float *, float) [57] 1.66 0.00 4367971/4554070 ssgRangeSelector::cull(sgFrustum *, float (*)[3], int) <cycle 6> [16] [45] 2.1 1.73 0.00 4554070 ssgSelector::select(unsigned int) [45] ----------------------------------------------- 0.00 0.10 7/121 FGTextureManager::createTexture(basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> > const &) [276] 0.00 0.13 9/121 ssgLoaderOptions::createTexture(char *, int, int, int) [239] 0.00 1.47 105/121 ssgSimpleState::setTexture(char const *, int, int, int) [58] [46] 2.0 0.00 1.70 121 ssgTexture::ssgTexture(char const *, int, int, int) [46] 0.00 1.70 121/121 ssgLoadTexture(char const *, ssgTextureInfo *) [47] 0.00 0.00 121/322602 ssgBase::ssgBase(void) [673] 0.00 0.00 121/136 ssgTypeTexture(void) [2483] 0.00 0.00 121/135 ssgTexture::setFilename(char const *) [3428] 0.00 0.00 121/121 ssgTexture::alloc_handle(void) [3434] 0.00 0.00 121/121 ssgTexture::setDefaultGlParams(int, int, int) [3436] ----------------------------------------------- 0.00 1.70 121/121 ssgTexture::ssgTexture(char const *, int, int, int) [46] [47] 2.0 0.00 1.70 121 ssgLoadTexture(char const *, ssgTextureInfo *) [47] 0.00 1.70 121/121 ssgLoadSGI(char const *, ssgTextureInfo *) [48] 0.00 0.00 363/2194 ulStrNEqual(char const *, char const *, int) [1651] ----------------------------------------------- 0.00 1.70 121/121 ssgLoadTexture(char const *, ssgTextureInfo *) [47] [48] 2.0 0.00 1.70 121 ssgLoadSGI(char const *, ssgTextureInfo *) [48] 0.28 1.41 121/121 ssgSGIHeader::ssgSGIHeader(char const *, ssgTextureInfo *) [49] 0.00 0.00 121/121 ssgSGIHeader::~ssgSGIHeader(void) [10704] ----------------------------------------------- 0.28 1.41 121/121 ssgLoadSGI(char const *, ssgTextureInfo *) [48] [49] 2.0 0.28 1.41 121 ssgSGIHeader::ssgSGIHeader(char const *, ssgTextureInfo *) [49] 1.17 0.00 121/121 ssgMakeMipMaps(unsigned char *, int, int, int) [73] 0.24 0.00 71456/71456 ssgSGIHeader::getRow(unsigned char *, int, int) [165] 0.00 0.00 121/121 ssgSGIHeader::openFile(char const *) [1099] ----------------------------------------------- 0.03 1.66 6415/6415 fgMainLoop(void) [1] [50] 2.0 0.03 1.66 6415 FGTileMgr::prep_ssg_nodes(FGLocation *, float) [50] 0.44 1.08 295504/295504 FGTileEntry::prep_ssg_node(Point3D const &, float *, float) [57] 0.01 0.05 295504/295504 FGNewCache::next(void) [366] 0.01 0.03 301919/301919 FGNewCache::at_end(void) [455] 0.01 0.02 295504/295504 FGNewCache::get_current(void) [476] 0.00 0.00 6415/6415 FGNewCache::reset_traversal(void) [993] 0.00 0.00 6415/6415 FGLocation::get_tile_center(void) [1250] 0.00 0.00 6415/12831 FGLocation::get_world_up(void) [1189] ----------------------------------------------- 0.02 1.67 6414/6414 fgMainLoop(void) [1] [51] 2.0 0.02 1.67 6414 fgUpdateTimeDepCalcs(void) [51] 0.01 0.69 6414/6415 FGRadioStack::update(double) [86] 0.00 0.22 6414/6415 FGAircraftModel::update(double) [172] 0.01 0.15 6414/6415 FGViewMgr::update(double) [213] 0.02 0.13 6389/6389 FGUFO::update(double) [214] 0.02 0.12 6389/6389 FGAutopilot::update(double) [221] 0.00 0.13 6389/6389 FGSteam::update(double) [229] 0.01 0.11 6414/6415 SGEphemeris::update(double, double, double) [251] 0.03 0.01 6414/6414 fgLIGHT::UpdateAdjFog(void) [490] 0.00 0.01 6414/6414 FGModelMgr::update(double) [739] 0.00 0.00 12828/19216 FGInterface::get_inited(void) const [1320] 0.00 0.00 6414/25664 FGGlobals::get_viewmgr(void) const [1082] 0.00 0.00 6389/7883 FGGlobals::get_autopilot(void) const [1536] 0.00 0.00 12828/43755 FGGlobals::get_time_params(void) const [1305] 0.00 0.00 6414/12832 FGGlobals::get_model_mgr(void) [1529] 0.00 0.00 6414/12838 FGGlobals::get_aircraft_model(void) [1524] 0.00 0.00 6414/57766 FGGlobals::get_ephem(void) const [1180] 0.00 0.00 1/1 FGInterface::bind(void) [1849] 0.00 0.00 1/1 FGUFO::init(void) [2018] 0.00 0.00 26/891294 FGGlobals::get_scenery(void) const [499] 0.00 0.00 26/782273 FGScenery::get_cur_elev(void) const [662] 0.00 0.00 1/180027 sglog(void) [664] 0.00 0.00 1/180026 logstream::operator<<(loglevel const &) [955] 0.00 0.00 1/180026 loglevel::loglevel(sgDebugClass, sgDebugPriority) [1665] 0.00 0.00 6414/72318 FGInterface::get_Latitude(void) const [3028] 0.00 0.00 6414/6415 SGTime::getLst(void) const [3141] 0.00 0.00 6414/6415 SGTime::getMjd(void) const [3142] 0.00 0.00 6389/6391 FGGlobals::get_steam(void) const [3152] 0.00 0.00 1/1 FGInterface::get_bound(void) const [4042] ----------------------------------------------- 0.00 0.00 100/29635594 ssgMakeSphere(ssgSimpleState *, ssgColourArray *, double, int, int, int (*)(ssgEntity *), int (*)(ssgEntity *)) [1434] 0.00 0.00 180/29635594 FGTileEntry::load(SGPath const &, bool) [68] 0.00 0.00 45684/29635594 FGTileEntry::gen_lights(ssgVertexArray *, int, float) [657] 0.19 0.00 3476085/29635594 ssgVtxTable::getNumNormals(void) [154] 0.19 0.00 3479193/29635594 ssgVtxTable::getNumTexCoords(void) [157] 0.19 0.00 3480229/29635594 ssgVtxTable::getNumColours(void) [148] 1.05 0.00 19154123/29635594 ssgVtxTable::getNumVertices(void) [55] [52] 2.0 1.63 0.00 29635594 ssgSimpleList::getNum(void) [52] ----------------------------------------------- 0.00 0.00 1554/5947250 OptVertexList::add(ssgLeaf *) [613] 0.00 0.01 44223/5947250 LeafUserData::setup_triangle(int) [195] 0.01 0.04 165420/5947250 gen_random_surface_points(ssgLeaf *, ssgVertexArray *, double) [260] 0.32 1.25 5736053/5947250 FGHitList::IntersectLeaf(ssgLeaf *, double (*)[3], double *, double *, unsigned int) [22] [53] 2.0 0.33 1.29 5947250 ssgVtxTable::getVertex(int) [53] 0.30 0.66 11894500/19154123 ssgVtxTable::getNumVertices(void) [55] 0.15 0.19 5947250/9650703 ssgVertexArray::get(unsigned int) [99] ----------------------------------------------- [54] 1.9 0.15 1.42 618817+1010517 <cycle 2 as a whole> [54] 0.05 0.07 565351 SGPropertyNode::get_double(void) const <cycle 2> [250] 0.08 0.02 618481+87 SGPropertyNode::getDoubleValue(void) const <cycle 2> [264] 0.01 0.01 221669 fgGetDouble(char const *, double) <cycle 2> [708] 0.00 0.00 9 SGRawValueMethods<FGSteam, double>::getValue(void) const <cycle 2> [3700] 0.00 0.00 1 FGSteam::get_ASI_kias(void) const <cycle 2> [4020] ----------------------------------------------- 0.00 0.00 89834/19154123 ssgVtxTable::getNumTriangles(void) [591] 0.01 0.01 217619/19154123 ssgVtxTable::recalcBSphere(void) [325] 0.09 0.19 3476085/19154123 ssgVtxTable::draw(void) [18] 0.09 0.19 3476085/19154123 ssgVtxTable::draw_geometry(void) [30] 0.30 0.66 11894500/19154123 ssgVtxTable::getVertex(int) [53] [55] 1.9 0.48 1.05 19154123 ssgVtxTable::getNumVertices(void) [55] 1.05 0.00 19154123/29635594 ssgSimpleList::getNum(void) [52] ----------------------------------------------- _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel