I wrote a compare code between IL, unsafe method C# and Dynamic method in VB.net, I'm find out IL code has been slower then normal method almost 3 time even it's the same code I just use ildasm extract from unsafe method from C#.
I don't know what's I do wrong or it's some magic trick of Visual studio.
I'm actually working on this exact same issue. I'm performing a series of perf tests and I'm in contact with the language team at Microsoft in order to understand this issue better. Once we get a reply from the JIT/GAC people, I'll be writing up a blog post about it on CodeProject. Should have an answer within the next week.
I didn't mean to imply that it was.
I said I was working on the issue, and that I would present my findings.
To address the specific question about weird IL performance, however, I have discovered that applying security link access demand for unmanaged code sucks the wind out of your sails to the tune of 3 to 5 times a degradation in performance.
It does not seem logical the IL-compiled code would run slower than dynamic methods.
Can I inquire, is there a speed difference when you compile to the 64 bit platform? Now I'm very curious and somewhat determined to get to the root of your problem.
I installed your plugin in Visual Studio 2010, and I created a project of type "Console application with IL support". When I open the Program.il file that was automatically created with the project, there is no syntax highlighting, but there is in your screenshot. How do I turn on syntax highlighting ? Thank you.
I just had the chance to test on Visual Studio 2010. The modifications applied to support Visual Studio 2012 have introduced a bug making the syntax highlighting throw an exception on Visual Studio 2010, thus disabling it.
I will fix this bug in version 2.1 as soon as possible. Meanwhile, everything should still compile correctly.
I know you're a busy man. I'm interested in fixing the bug, I was hoping you could pin point where it is or where I should start looking. Perhaps it would be easiest if you could send me (or commit to github) the old version, so that I can diff and see what has changed in order to understand the issue.
Any help is much appreciated. As I'm sure you know already, this extension is awesome!
I'm afraid the 2010 version was coded on a kitchen counter, and that code is no longer available. I don't have access to Visual Studio 2010 right now, making this hard to fix at the moment.
The only help I can give you is that the problem is a "configuration" one, like not providing the right interfaces or constants. The parser has not changed between 2010 and 2012 (and really, the only code is there).
If you fix it before I get my hands on Visual Studio 2010, send me a pull request or a zip of the code and I'll update the extension.
I am running this in VS2013 without any issues so far.
You can force this yourself if you open the .vsix (It's just a zip really) and edit the 'extension.vsixmanifest' to support the required VS version number.