3
首先发布在这里,请温柔。不断在C#中切换动态数据类型的性能#
比方说,我们有这个假设的用例,我们需要一个动态的数据类型,不断地在几种类型之间切换。
// 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 tick中所需要的功能。不过,我认为这可能还是太慢了。
我是否缺少任何其他.NET Framework方法,这可能会比使用动态更快?
请记住,它是一个不断处理切换的要求,因为如果切换一次,DLR只会缓存动态值,而且确实非常快。
感谢您的阅读。
你还可以发布更快的代码吗?而且,你的数据总是成为价值类型和字符串?如果是这样,动态是严重的矫枉过正,你可以投到/从对象。 – 2014-12-03 20:11:43
您可以使用'object'和casting来代替'dynamic'。没有看到你真正打算如何使用它,很难提出满足你需求的解决方案,或者甚至需要担心性能(99%的时间你不需要)。 – 2014-12-03 20:17:10
@PaulSasik我在广泛测试之后愿意将它发布到GitHub上,我对此有点害羞。感谢您的反馈意见。 – 2014-12-03 20:17:40