.NET平台调用性能优化

10次阅读

.NET 出现以前,很多成熟的库是采用 C /C++,或 COM 的形式存在于各个应用程序中,这些库或程序已经运行了很长时间,并且非常稳定,成熟。.NET 提供了多种方法可以在托管代码中调用非托管的代码,但是调用的性能要很多损失,为尽量优化平台调用的性能,这里介绍几个注意点。尽量减少对非托管代码的调用,因此尽量避免在循环体中调用非托管代码,而应尽量将整个循环体写到非托管代码中,即一次平台调用来完成尽量多的任务;
DllImportAttribute 属性指定的 dll 路径,可以尽量放在程序根目录上,因为.NET 搜寻在根目录下查找 dll 文件,然后到 windows 系统目录下面搜索,最后到 PATH 环境变量下所有目录下搜索,如果还没有找到就会抛出 DllNotFoundException;
如果明确调用的函数名,因使用 ExactSpelling=True 标识,因为,如果调用 MessageBox 函数时,如果没有找到该函 数,.net 就会尝试搜索 MessageBoxA 或 MessageBoxW,具体搜索哪一个,是根据 DllImportAttribute 属性中 CharSet 决定的,如果 CharSet 设置为 CharSet.Ansi 则搜索 MessageBoxA,如果是 CharSet.Unicode 则搜索 MessageBoxW;

正文完