gpt4 book ai didi

Java:如果我使用封装在类中的原始数据类型,它会慢多少?

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:34 24 4
gpt4 key购买 nike

我正在翻译C++代码,其中大量使用了typedef。我不能在 Java 中这样做,所以我做的是:

// C++
typedef unsigned int BucketKey;


// Java
public class BucketKey {
public int val;
}

我不是 Java 专家,实际上是新来的,我想知道有多贵是不是直接用int,而是用BucketKey?

顺便提一下,我需要至少再对 5 种类型执行此操作。

谢谢

最佳答案

它会增加巨大的开销,尤其是在您有数组的情况下。我建议编写一个测试程序进行比较。

在 Java 中,int[100] 创建一个包含 100 个整数的数组 - 类似于 C/C++,Integer[100]YourObjectContainingAnIntMember[100] 有一个包含 100 个引用(指针)的数组,指向 100 个不同的对象。

更不用说 BucketKey 对象将具有引用语义,但 int 具有类似于 C++ 中的值语义:

BucketKey x = new BucketKey(100);
BucketKey y = x
y.value = 200; // x will change as well

int x = 100;
int y = x;
y = 200; // x will remain 100

还值得补充的是,C++ 中的 typedef 也不会创建新类型。所以 BucketKey 变量的类型只是 int - 但 Java 没有 typedef 来调用 int 的更多方法。不同类型的 C++ 解决方案是

struct BucketKey {
value x;
}

关于Java:如果我使用封装在类中的原始数据类型,它会慢多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com