c# - C#中不断切换动态数据类型性能

标签 c# performance dynamic types

第一次发帖,请文静

假设我们有一个假设的用例,我们需要一种不断在多种类型之间切换的动态数据类型。

// Declare stuff
const string dataString = "String";
const double dataDouble = 2.0;
dynamic dynamicThing = dataString;
var w = new Stopwatch();

// Measure performance of switching types once
w.Start();
dynamicThing = dataDouble;
double dynamicDouble = dynamicThing;
dynamicThing = dataString;
string dynamicString = dynamicThing;
w.Stop();

在我的开发箱中,这个特定示例的时钟频率约为 4936519 个滴答。我已经设法实现了一个在 25529 个滴答中完成我需要的实现。但是,我认为这可能仍然太慢。

我是否缺少任何其他 .NET Framework 执行此操作的方法可能比使用动态方法更快?

请记住,不断处理切换是一项要求,因为如果只切换一次,DLR 只会缓存动态值,而且速度确实会非常快。

感谢阅读。

最佳答案

看来,如果使用值类型,最快的方法就是使用object和cast。

object objectThing = dataString;
w.Restart();
objectThing = dataDouble;
double objectDouble = (double)objectThing;
objectThing = dataString;
string objectString = (string)objectThing;
w.Stop();

只有 14 个刻度。

关于c# - C#中不断切换动态数据类型性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27280697/

相关文章:

javascript - 如何在 SVG 中获取有效的动态 javascript 引用

javascript - Modal moSTLy 保持立即退出

c# - 如何以特定格式存储数据?在所见即所得?

c# - 在 C# asp.net core 2.1 中通过用户名和密码在 MQTT 服务器上验证 MQTT 客户端

performance - DBPedia 查询非常慢

SQL如何处理页面上的大量评论/注释

c# - 如何在 ASP Core 中使用 HttpGet 指定默认 View

c# - 是否可以从图书馆/在图书馆中查找或定义资源?

java - 传递整个对象与传递对象的属性

php - htaccess 动态查询字符串