Changes in src/CodeTools/DeclStats.cc [131dbb3:eed5e48]
- File:
-
- 1 edited
-
src/CodeTools/DeclStats.cc (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeTools/DeclStats.cc
r131dbb3 reed5e48 63 63 std::map<unsigned, unsigned> p_poly; ///< Count of decls with each percentage of polymorphic elements 64 64 VectorMap<unsigned> n_types; ///< Count of decls with each number of distinct types in the pack 65 /// Count of decls with each percentage of new types in lists.66 /// Types used in the parameter list that recur in the return list are not considered to be new.67 std::map<unsigned, unsigned> p_new;68 65 69 66 ArgPackStats& operator+= (const ArgPackStats& o) { … … 74 71 sum(p_poly, o.p_poly); 75 72 sum(n_types, o.n_types); 76 sum(p_new, o.p_new);77 73 78 74 return *this; … … 90 86 /// Count of uses of each non-basic type 91 87 std::unordered_map<std::string, unsigned> compound_type_names; 92 /// Count of decls using each basic type93 std::unordered_map<std::string, unsigned> basic_type_decls;94 /// Count of decls using each compound type95 std::unordered_map<std::string, unsigned> compound_type_decls;96 88 /// Stats for the parameter list 97 89 ArgPackStats params; … … 106 98 ArgPackStats assn_returns; 107 99 108 Stats() : n_decls(0), n_type_params(), by_name(), basic_type_names(), compound_type_names(), basic_type_decls(), compound_type_decls(),params(), returns(), n_assns(), assn_params(), assn_returns() {}100 Stats() : n_decls(0), n_type_params(), by_name(), basic_type_names(), compound_type_names(), params(), returns(), n_assns(), assn_params(), assn_returns() {} 109 101 110 102 public: … … 115 107 sum( basic_type_names, o.basic_type_names ); 116 108 sum( compound_type_names, o.compound_type_names ); 117 sum( basic_type_decls, o.basic_type_decls );118 sum( compound_type_decls, o.compound_type_decls );119 109 sum( params, o.params ); 120 110 sum( returns, o.returns ); … … 132 122 133 123 /// Update arg pack stats based on a declaration list 134 void analyze( Stats& stats, std::unordered_set<std::string>& seen,ArgPackStats& pstats, std::list<DeclarationWithType*>& decls ) {124 void analyze( Stats& stats, ArgPackStats& pstats, std::list<DeclarationWithType*>& decls ) { 135 125 std::unordered_set<std::string> types; 136 unsigned n = 0; ///< number of args/returns 137 unsigned n_basic = 0; ///< number of basic types 138 unsigned n_poly = 0; ///< number of polymorphic types 139 unsigned n_new = 0; ///< number of new types 126 unsigned n = 0; 127 unsigned n_basic = 0; 128 unsigned n_poly = 0; 140 129 for ( auto decl : decls ) { 141 130 Type* dt = decl->get_type(); … … 146 135 dt->print( ss ); 147 136 types.insert( ss.str() ); 148 bool this_new = seen.insert( ss.str() ).second;149 if ( this_new ) { ++n_new; }150 137 151 138 if ( dynamic_cast<BasicType*>( dt ) ) { 152 139 ++n_basic; 153 140 ++stats.basic_type_names[ ss.str() ]; 154 if ( this_new ) {155 ++stats.basic_type_decls[ ss.str() ];156 }157 141 } else if ( GenPoly::hasPolyBase( dt ) ) { 158 142 ++n_poly; 159 143 } else { 160 144 ++stats.compound_type_names[ ss.str() ]; 161 if ( this_new ) {162 ++stats.compound_type_decls[ ss.str() ];163 }164 145 } 165 146 } … … 170 151 ++pstats.p_basic[ n_basic*100/n ]; 171 152 ++pstats.p_poly[ n_poly*100/n ]; 172 ++pstats.p_new[ n_new*100/n ];173 153 } 174 154 ++pstats.n_types.at( types.size() ); … … 176 156 177 157 void analyzeFunc( FunctionType* fnTy, Stats& stats, ArgPackStats& params, ArgPackStats& returns ) { 178 std::unordered_set<std::string> seen; 179 analyze( stats, seen, params, fnTy->get_parameters() ); 180 analyze( stats, seen, returns, fnTy->get_returnVals() ); 158 analyze( stats, params, fnTy->get_parameters() ); 159 analyze( stats, returns, fnTy->get_returnVals() ); 181 160 } 182 161 … … 296 275 printAllMap("%_poly_" + name, [&extract](const Stats& stats) { return extract(stats).p_poly; }); 297 276 printAllMap("n_distinct_types_" + name, [&extract](const Stats& stats) { return extract(stats).n_types; }); 298 printAllMap("%_new_types_in_" + name, [&extract](const Stats& stats) { return extract(stats).p_new; });299 277 } 300 278 … … 313 291 printAll("basic_type_names", [](const Stats& stats) { return stats.basic_type_names.size(); }); 314 292 printAllSparseHisto("basic_type_uses", [](const Stats& stats) { return stats.basic_type_names; }); 315 printAllSparseHisto("decls_using_basic_type", [](const Stats& stats) { return stats.basic_type_decls; });316 293 printAll("compound_type_names", [](const Stats& stats) { return stats.compound_type_names.size(); }); 317 294 printAllSparseHisto("compound_type_uses", [](const Stats& stats) { return stats.compound_type_names; }); 318 printAllSparseHisto("decls_using_compound_type", [](const Stats& stats) { return stats.compound_type_decls; });319 295 printAllPack("params", [](const Stats& stats) { return stats.params; }); 320 296 printAllPack("returns", [](const Stats& stats) { return stats.returns; });
Note:
See TracChangeset
for help on using the changeset viewer.