c# - 将 C# 代码反汇编为机器指令

标签 c# performance x86 cil ildasm

我正在试验编译器性能。我有一小段代码,只有一些浮点乘法和加法。代码在循环中执行数百万次。我正在尝试用 C++、c#、java、perl、python 编译代码……然后在测量执行时间的同时运行结果。

我对 C# 的性能很不满意。我的 C# 代码比等效的 C++ 或 Java 慢大约 60%。我敢肯定,我的实验一定有错误。我想反汇编生成的二进制文件以了解原因。

MSIL 代码有这样的选项吗?能否在机器指令级别(x86 指令,而非 MSIL 指令)检查 c# JIT 编译器的结果?

更新

代码(u、v、g*是double;steps是整数)

stopwatch.Start();
for (int i = 0; i < steps; i++)
{
    double uu = g11 * u + g12 * v;
    v = g21 * u + g22 * v;
    u = uu;
}
stopwatch.Stop();

最佳答案

在 Visual Studio 中调试您的代码(但在 Release模式下编译),在循环中放置一个断点,并在执行停止在断点处时打开反汇编窗口(调试 -> Windows -> 反汇编)。

关于c# - 将 C# 代码反汇编为机器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001471/

相关文章:

c# - 使用 LightweightExcelReader 将 Excel 转换为 JSON

C# 函数编写

c# - 带有主题 UID 的 X509 证书

程序集 x86 : comparing strings doesn't work

x86 - SSE2指令以相反顺序加载整数

.net - 用于 .NET 的轻量级 x86 模拟器/在托管环境中执行 x86 代码

c# - DateTime 数据,分成几天

Python for循环导致系统崩溃

c# - 为什么在 C# 中有些迭代器比其他迭代器快?

MySQL优化存储过程中慢UNION查询