2

我正在尝试学习数字图像处理,我发现我的朋友使用 c#。他使用C#有一个很重要的原因:unsafec#中有关键字,他的代码(算法部分)的性能可以达到c++相同代码的75%,这对他来说已经足够好了。

他鼓励我转向 c#,但我是多年的 java 程序员。我知道Unsafejava中也有一个类,但我从未使用过它,不确定性能是否与C#一样好。

所以我想知道在java中的性能,Unsafe用java进行图像处理是不是一个好主意?


更新

只是将不安全的代码用于一些性能感知任务,而不是在任何地方使用它。

4

3 回答 3

3

不安全意味着您可以避免托​​管环境中的所有开销。所有范围和类型检查、垃圾收集、反射等。您的代码是否会更快使用 unsafe 都取决于您编写的内容。我敢说主要的优化点将是处理大块原始内存,而不是说 OO 会引导你走向的像素类或结构的列表。

于 2012-08-11T13:07:18.407 回答
2

我喜欢 C#,但是因为一个功能范围非常有限而选择一种语言而不是另一种语言,这对我来说似乎是一个非常薄弱的​​论据。不要根据您朋友的意见选择语言,而是根据您的需求和偏好!编程语言只是一种工具。你会像那样认真地抛弃多年的经验吗?使用您最熟悉的语言。

于 2012-08-11T13:11:12.557 回答
0

检查这个讨论它在这里提出了关于它的优点和缺点

虽然这篇文章取自 C# 文章,但我认为它也适用于 Java - 在不安全代码或换句话说非托管代码中检查这里是可以声明和使用指针的。但问题是我们为什么要编写非托管代码?如果我们想要编写与操作系统接口的代码,或者想要访问内存映射设备或者想要实现时间关键算法,那么使用指针可以带来很多好处。

但是使用指针也有一些缺点。如果在编译时将指针选择为 32 位数量,则代码将被限制为 4gig 的地址空间,即使它在 64 位机器上运行也是如此。如果在编译时将指针选择为 64 位,则代码无法在 32 位机器上运行。

于 2012-08-11T13:03:23.587 回答