在C++中调用函数时,推rdi和pop rdi的目的是什么?VS2010,x64,调试,没有优化
C++
int calc()
{
return 8 + 7;
}
Run Code Online (Sandbox Code Playgroud)
拆卸:
int calc()
{
000000013F0B1020 push rdi
return 8 + 7;
000000013F0B1022 mov eax,0Fh
}
000000013F0B1027 pop rdi
000000013F0B1028 ret
Run Code Online (Sandbox Code Playgroud) 看看这段代码.
interface ILoader
{
}
interface ILoader<T>: ILoader
{
T Load();
}
class CarLoader: ILoader<Car>
{
...
}
class TrainLoader: ILoader<Train>
{
...
}
class Container
{
List<ILoader> loaders = new ILoader[] { new CarLoader(), new TrainLoader()};
public T Load<T>()
{
// Finding right loader
var loader = loaders.OfType<ILoader<Car>>.FirstOrDefault();
return loader.Load();
}
}
Run Code Online (Sandbox Code Playgroud)
我有大约100个装载机,我需要加载很多火车,汽车等.我认为装载机列表非常慢(有OfType()线性复杂性??),你建议使用什么而不是列表?Dictionary<Type,ILoader>或Hashtable<Type,ILoader>或HashSet<ILoader>?例如使用hashset.OfType<ILoader<Car>>(),列表或更快的速度有多快?