I would like to do some fairly basic program analysis on my .NET code (which is a combination of .dlls, .exe and C# code). Using Microsoft's Common Compiler Infrastructure, I first converted the code to it's IL form using which I would like to construct a call graph. Once I have the call graph, are there some standard tools that can be leveraged in order to gain insights in code complexity, identifying bottlenecks, memory footprint etc.? Any pointers would be really appreciated!
Code Analysis from Common Intermediate Language (CIL)
562 Views Asked by Sameer Agarwal At
1
There are 1 best solutions below
Related Questions in .NET
- file download method in visual studio 2017
- Repository manager receives the wrong connection string in .net core
- MongoDb not connecting C#
- The current .NET SDK does not support targeting .NET Core 6.0. Brand new WPF Project VS Community 2022 17.9.5
- Why Scanning GSI on DynamoDb doesnt work as fast as expected when using CONTAINS?
- Are "blittable types" really unmanaged types for StructLayout Sequential
- Failed to fetch dynamically imported module on Blazor JS Interop
- Problem to upload several images per one request
- Implementing Azure AD B2C Authentication in .NET 8 Blazor Project (RenderMode: InteractiveAuto)
- Stripe connect payout - throws exceptions
- 'IOException: The cloud file provider is not running', when trying to delete 'cloud' folder
- Azure Application Insights Not Displaying Custom Logs for Azure Functions with .NET 8
- Convert C# DateTime.Ticks to Bigquery DateTime Format
- Socket.io nodejs server .NET connection
- Producer Batching Service Bus Vs Kafka
Related Questions in OPTIMIZATION
- Optimize LCP ReactJs
- Efficiently processing many small elements of a collection concurrently in Java
- How to convert the size of the HTML document from 68 Kb to the average of 33 Kb?
- Optimizing Memory-Bound Loop with Indirect Prefetching
- Google or-tools soft constraint issue
- How to find function G(x), and make for every x, G(x) always returns fixed point for another function F(G(x))
- Trying to sort a set of words with the information theory to solve Worlde in Python but my program is way to slow
- Do conditional checks cause bottlenecks in Javascript?
- Hourly and annual optimization problem over matrix
- Sending asynchronous requests without a pre-defined task list
- DBT - Using SELECT * in the staging layer
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Is this a GCC optimiser bug or a feature?
- Performance difference between two JavaScript code snippets for comparing arrays of strings
- Distribute a list of positive numbers into a desired number of sets, aiming to have sums as close as possible between them
Related Questions in PROFILER
- what are the numbers in the operation names when profiling an application
- Unable to capture iterations on dlprof
- Linux perf does not record function in libstdc++.so correctly
- Where can I track subscribed events in unity?
- Intel Vtune hotspot can not see source code (only assembly code )
- How to use visual studio performance profiler ? after clicking start the application is running but not the profiler
- When profiling using torch.autograd.profiler, the run time changes every time I added profiler.record_function to different plac
- How to interpret Firefox profiler result evaluation for non-JS code?
- Is there a way to parse data generated by perf tool?
- Error while connecting to Snapdragon Profiler
- Too much memory used when using WebCamTexture in unity
- Intellij Profiler - read/copy/save value
- Memory leak in fragments : activity in ActivityThread$ActivityClientRecord
- How to construct a similar test program based on the behavior of a given program?
- How to Setup Netbeans Profiler for Payara server deployed in remote windows host?
Related Questions in CIL
- Boxing System.RuntimeArgumentHandle
- Where and how are IL opcodes implemented in the .NET runtime source code
- .NET reflection emit - what am I doing wrong in writing this method in MSIL?
- View Intermediate Language code in Visual Studio
- How to parse a method invocation in IL bytes?
- How are memory allocations handled in "bytecode based" languages?
- Using Harmony to patch the real content of an async method for a Unity game
- Undefined behavior when trying to Memory.Slice using il.Emit
- How to emit IL for ref locals using ILGenerator?
- CIL code parses "15" into 15,000000000000004
- CIL shows `box` ops when the generic type is constrained to a class
- Is the C# compiler able to optimize a statement like someEnumerable.Count() < 2?
- Why is there a `.constrained` opcode preceeding the `call` opcode when calling an abstract static function?
- C# find what the last interacted with instance in the call stack is
- Insert method call into setter causes Invalid IL code
Related Questions in CCI
- Problems with Pandas_ta library getting CCI key error
- CumulusCI TaskImportError: Cannot load Python class for task - No module named 'imp'
- CCI Y-axiz label
- Spring 5.3 deprecates CciTemplate
- How to get same cci values from Trading view in Golang?
- How to replicate Pinescript results from CCI?
- Externalizing Properties so that deployment doesn't require code compilation
- Loading a cci file in R
- Best way to use JCA CCI connections - Alternative to Spring CCI Support
- How to maintain EPI terminal connection from an EJB using CCI?
- Reflection.Emit equivalencies in CCI
- How to invoking Oracle CCI from a Command Line
- Using Roslyn Emit method with a ModuleBuilder instead of a MemoryStream
- JavaEE Connector Architecture - difference between system contracts and common client interface
- How to read assembly from stream instead of file in Common Compiler Infrastructure
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I think what you want is pretty much impossible. The count of object allocations could vary wildly depending on specific input.
For example, imagine there was a method in your program that allocated a lot of objects, but it would run only under some condition. If your analysis was to asses the count of object allocations accurately, it would need to know whether the method ran. And the only way to do that is to actually evaluate that condition, which means you would actually need to run the program.
And memory footprint is probably even more difficult: it would require you to track the complete object graph and simulate the GC.
In short: the best way to find out performance characteristics of your program is to actually run it. Doing the same using static analysis would be hard and inaccurate. Don't forget that it's impossible to find out whether program completes using static analysis. I think what you want is even more difficult.