(这是一个一般性的假设性问题,我抱怨 .NET 是一头猪,并乞求理由。这并不是关于我的特定应用程序的问题。)
目前我正在用 C# 重写一些旧的 C++ 代码。我们正在移植所有遗留应用程序。我有占用 MAX 3% CPU 的 C++ 应用程序。大多数情况下,他们没有使用。然后我获取代码,复制和粘贴,然后重新格式化为 C# 语法和 .NET 库,然后 BAM!50% 中央处理器。这是什么原因?起初我以为是 JIT,但即使在每个代码路径都经过练习之后,整个事情都是 JIT 编辑的,同样的问题。
我还注意到巨大的内存增加。运行满负载需要 9 MB 的应用程序现在以 10 MB 启动并以 50 MB 运行。我意识到硬件很便宜,但我想了解是什么原因造成的。这是引起恐慌的原因,还是 .NET 就是这么一头猪?
更新 1 对 Skeet 的回答
我熟悉 C#。我将事情更改为 Linq,等等。我通常采用代码并减少行数,等等。您能否提供更多示例说明我在 .NET 中做错了什么?
更新 2
这是一个普遍的问题,但有问题的特定应用程序如下。
它有一个线程,使用 ODBC 驱动程序从 paradox db 获取数据。然后它使用 Linq 将其转换为 SQL 数据库并发布。我已经通过 ANTS 分析器运行它,似乎数据集填充花费的时间最多。紧随其后的是 Linq 发帖。我知道我的一些领域是反射使用,但我不知道如何做我需要做的事情。我计划将我的字符串更改为字符串生成器。这两者有什么区别吗?
(int)datarow["Index"]
和
ConvertTo.Int32(datarow["Index"])
我将所有字符串连接更改为格式化字符串。这并没有减少开销。有人知道数据阅读器与数据适配器和数据集之间的区别吗?