第一次发帖,请文静
假设我们有一个假设的用例,我们需要一种不断在多种类型之间切换的动态数据类型。
// 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/