microsoft / ELL
Unit Size

The distribution of size of units (measured in lines of code).

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 7,411 units with 74,515 lines of code in units (58.2% of code).
    • 29 very long units (4,114 lines of code)
    • 130 long units (8,674 lines of code)
    • 679 medium size units (20,770 lines of code)
    • 1,205 small units (17,375 lines of code)
    • 5,368 very small units (23,582 lines of code)
5% | 11% | 27% | 23% | 31%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
cpp7% | 14% | 29% | 22% | 26%
py4% | 9% | 30% | 23% | 32%
h<1% | 5% | 22% | 25% | 46%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
libraries/value18% | 15% | 29% | 14% | 22%
tools/utilities5% | 15% | 30% | 25% | 22%
libraries/nodes4% | 18% | 26% | 20% | 29%
tools/trainers28% | 38% | 21% | 8% | 3%
libraries/common13% | 33% | 23% | 12% | 16%
tools/importers3% | 8% | 29% | 21% | 37%
libraries/utilities2% | 2% | 25% | 28% | 40%
interfaces/common4% | 11% | 25% | 26% | 32%
libraries/emitters1% | 3% | 26% | 21% | 46%
libraries/model0% | 6% | 26% | 26% | 40%
libraries/passes0% | 32% | 33% | 22% | 11%
libraries/dsp0% | 6% | 33% | 34% | 25%
libraries/trainers0% | 9% | 42% | 27% | 20%
tools/wrap0% | 41% | 13% | 16% | 27%
libraries/predictors0% | 3% | 37% | 17% | 41%
libraries/optimization0% | 5% | 25% | 23% | 44%
libraries/data0% | 5% | 10% | 32% | 51%
libraries/emittable_functions0% | 17% | 25% | 40% | 16%
interfaces/python0% | 9% | 53% | 16% | 21%
libraries/math0% | 0% | 13% | 36% | 49%
libraries/model_testing0% | 0% | 24% | 38% | 36%
libraries/evaluators0% | 0% | 31% | 23% | 45%
libraries/functions0% | 0% | 16% | 63% | 20%
libraries/testing0% | 0% | 15% | 47% | 37%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
void GeneralCachingStrategy::HandleCachingImpl()
in libraries/value/src/CachingStrategies.cpp
583 57 1
def fit()
in tools/utilities/pythonlibs/audio/training/train_classifier.py
168 48 8
void ParsedMapCompilerArguments::AddArgs()
in libraries/common/src/MapCompilerArguments.cpp
165 1 1
def parse_cfg()
in tools/importers/darknet/darknet_to_ell.py
163 26 1
void LLVMContext::CopyDataImpl()
in libraries/value/src/LLVMContext.cpp
149 23 2
Scalar CodeGenerator::EmitKernelPredicate()
in libraries/value/src/loopnests/CodeGenerator.cpp
144 24 3
Value LLVMContext::BinaryOperationImpl()
in libraries/value/src/LLVMContext.cpp
143 31 3
void BLASTCopy::HandleCachingImpl()
in libraries/value/src/CachingStrategies.cpp
138 3 1
int main()
in tools/trainers/linearTrainer/src/main.cpp
137 22 2
std::string LoopNestPrinter::GetPredicateString()
in libraries/value/src/loopnests/LoopNestPrinter.cpp
136 26 3
void CommandLineParser::Parse()
in libraries/utilities/src/CommandLineParser.cpp
135 31 0
model::Map GenerateBinaryDarknetLikeModel()
in tools/utilities/profile/src/GenerateTestModels.cpp
134 3 1
void EmitReceptiveFieldToColumns()
in libraries/nodes/include/ReceptiveFieldMatrixNode.h
126 12 10
Scalar Dot()
in libraries/value/src/VectorOperations.cpp
126 11 2
int main()
in tools/trainers/retargetTrainer/src/main.cpp
123 27 2
Node ModelBuilder::AddTypeCastNode()
in interfaces/common/src/ModelBuilderInterface.cpp
121 31 3
void InitArguments()
in tools/utilities/finetune/src/FineTuneArguments.cpp
121 1 2
Value LLVMContext::LogicalOperationImpl()
in libraries/value/src/LLVMContext.cpp
115 19 3
def train()
in tools/utilities/pythonlibs/audio/training/train_classifier.py
114 22 5
def run()
in tools/utilities/optimizer/profile_builder.py
112 26 1