Optimization Features
Yano goes beyond obfuscation and will incrementally provide more value for your applications.
Pruning
Smaller applications are downloaded, installed, loaded and run faster. Yano offers pruning feature by removing unused code and metadata. Significant assembly size reduction is achieved, concerving computing resources such as network traffic, disk space and operating memory usage.
When Deep Analysis is enabled, Yano uses an unique static analysis algorithm to spot unused metadata elements and code blocks. Those elements can then be safely pruned. Pruning gives a substantial assemblies size reduction when the application is built from reusable components. For example, this feature cuts in size Yano assemblies by about 30%.
Deep Analysis considers code or metadata elements as used (i.e. unprunable) when they are directly or indirectly called or used by entry point methods. Yano implicitly considers the standard Main methods as entry points, but you can mark any other method as an entry point by simply excluding it from pruning (see Advanced Rules).
Without Deep Analysis, Yano is still able to prune the following metadata elements:
- Property metadata when there is no evidence that a property is being referenced. This gets getters and setters mixed with regular methods and indistinguishable.
- Event metadata (similar to property).
- Constant declarations are nearly always safe to be pruned, because .NET compilers replace constant references with their actual values at compile-time.
- Attribute applications that may help attackers gain some additional information about original code, such as System.Runtime.CompilerServices.CompilerGeneratedAttribute, System.Diagnostics.DebuggerDisplayAttribute, etc.
