我必须使用/ unsafe编译我的程序集才能使用指针。 当我用/ unsafe编译时,我想知道差异。 请假设没有编程错误,例如无效使用指针等。如果我使用不安全的编译程序集,我会失去一些性能吗? 任何记忆缺点?

#1楼 票数:3 已采纳

好吧,使用“不安全”的代码,你基本上可以提高性能,使用diect访问内存和指针ariphmetics。 使用它的常见情况是专注于高性能的.NET代码,例如3D渲染内核引擎。 100% .NET代码中编写这样的东西会使应用程序变得太慢,所以指针可以解决,特别是当我们需要处理像OpenGL这样的C/C++库之间的“桥梁”时(比方说)

长话短说:如果你写一个好的非托管代码,你肯定会从中受益。

#2楼 票数:1

不安全的代码可以通过删除数组边界检查来提高应用程序的性能。

使用不安全代码会带来安全性和稳定性风险。

链接: http//msdn.microsoft.com/en-us/library/chfa2zb8.aspx

  ask by Demir translate from so

未解决问题?本站智能推荐:

2回复

如何签署我正在使用的不安全的C#CLR和程序集,而不是让数据库值得信任

我在我的C#CLR代码中使用.NET DirectoryServices和DirectoryServices.AccountManagement。 我想作为不安全的CLR存储过程发布到我的SQL Server数据库。 在Visual Studio中,我签署了我的CLR项目。 我想避免转向值
1回复

编译后如何正确重命名程序集?

构建我的类库后,我的 bin/Debug 目录中有几个 .dll(一些来自我自己的项目,而另一些来自第三方库)。 例如, 我想重命名这些程序集,以便它们包含它们的版本号。 例如, 做到这一点的最佳方法是什么? 我不能只重命名文件。 我需要自己更改程序集名称,并将这些更改传播到依赖于它们的任何内容。
1回复

将C#项目从VS2005移至VS2013后的编译器错误

将C#项目从VS 2005转换为VS 2013后,我遇到了一个问题: C:\\ Program Files(x86)\\ MSBuild \\ 12.0 \\ bin \\ Microsoft.Common.CurrentVersion.targets(1635,5):警告MSB3268:
1回复

C#中用于数据库初始化的条件编译的替代方法

我正在研究数据库初始化的替代实现,该实现不依赖#if #elif .....(不适用于VS2017已知问题中的.Net代码)来选择客户特定的数据库初始化程序。 对于开发和CI / CD环境而言,一种似乎明智的方法如下: 创建数据库初始化程序界面。 为每个包含上述接口实例的站点创建a
1回复

使用AssemblyInfo覆盖SharedAssemblyInfo的属性

我在解决方案中的多个项目中使用了一个共享的程序集信息文件(GlobalAssemblyInfo.cs),该文件是对每个项目的“ Add [ed] As Link”。 每个项目还具有自己的AssemblyInfo.cs,以添加并非所有项目都通用的属性。 在两个文件中也不允许重复属性。 一个
1回复

如何使用ScriptOptions引用外部项目DLL?

我有一个项目 A,我正在其中编写要使用 C# Script 对象进行内部编译的代码。 我在不同的解决方案(外部项目)中创建了另一个项目,即项目 B。我已经在“引用”列表中的项目 A 中添加了对 ProjectB.DLL 的引用。 我想要的是在我要编译的内部脚本代码上添加项目 B 的引用。 为了更好地
1回复

使用泛型类型时,C#System.TypeInitializationException

当我尝试调用以下代码时,我在C#中收到System.TypeInitializationException: BuyShopItem在外部程序BuyShopItem ,并且包含以下内容: 可能是因为外部装配,对吧? 不幸的是,我无法更改它,因为我需要再次将BuyShopItem传递回
1回复

使用装配体进行开发,但不使用装配体发货

我为一个名为BigClient的客户端工作。 BigClient中的计算机安装了称为BigSoftware的服务软件。 但是我的计算机未与此BigSoftware一起安装。 因此,当我开发在此BigSoftware上运行的应用程序时,我需要从该BigSoftware的lib文件夹中提取一个