更改java类

更改java类,java,performance,file,biginteger,Java,Performance,File,Biginteger,我发现了BigInteger类可能更快的实现。任何人都可以告诉我如何用这个来改变java.math中原来的BigInteger类。 提前谢谢 实际上,它不是我的实现,它在中介绍,。 每一个进步都是他们的工作,不是我的,我只是想利用它 不要。只需包含可能更快实现的jar文件(或类文件,或源代码),并将其实例化即可。不要这样做。只需包含可能更快实现的jar文件(或类文件,或源代码),并将其实例化即可。Java从rt.jar获取其所有内置类。您可以用该JAR中的另一个实现替换BigInteger类 当

我发现了BigInteger类可能更快的实现。任何人都可以告诉我如何用这个来改变java.math中原来的BigInteger类。 提前谢谢

实际上,它不是我的实现,它在中介绍,。
每一个进步都是他们的工作,不是我的,我只是想利用它

不要。只需包含可能更快实现的jar文件(或类文件,或源代码),并将其实例化即可。

不要这样做。只需包含可能更快实现的jar文件(或类文件,或源代码),并将其实例化即可。

Java从rt.jar获取其所有内置类。您可以用该JAR中的另一个实现替换BigInteger类


当然,我不推荐。在几乎所有情况下,扩展BigInteger都是一个更好的主意。但是这是可以做到的。

Java从rt.jar获取所有内置类。您可以用该JAR中的另一个实现替换BigInteger类


当然,我不推荐。在几乎所有情况下,扩展BigInteger都是一个更好的主意。但是这是可以做到的。

我想你是在问如何使用“java.math.biginger”而不是JVM版本

我认为您不想这样做,因为这需要您更新所有使用您的应用程序的JDK/JRE。更好的解决方案是使用“YourBigInteger”,而不是应用程序中的BigInteger


您还可能会问,如何让大众看到它被包含在JDK/JRE中。在这种情况下,我会说从OpenJDK开始。

我想你是在问如何使用“java.math.biginger”而不是JVM版本

我认为您不想这样做,因为这需要您更新所有使用您的应用程序的JDK/JRE。更好的解决方案是使用“YourBigInteger”,而不是应用程序中的BigInteger


您还可能会问,如何让大众看到它被包含在JDK/JRE中。在这种情况下,我会说从OpenJDK开始。

您应该能够通过Java“认可”机制覆盖JRE中提供的类:

然而,我完全同意上面的说法——如果可能的话,你应该简单地使用你的类而不是替换BigInteger:这个方法不需要更改JRE,并且没有破坏依赖于BigInteger的其他包的风险


但是,如果您有一个使用BigInteger的第三方软件包,并且出于某种原因(请仔细考虑),您希望切换其下的实现,那么认可的机制可能就是您所需要的。

您应该能够通过Java“认可”机制覆盖JRE中提供的类:

然而,我完全同意上面的说法——如果可能的话,你应该简单地使用你的类而不是替换BigInteger:这个方法不需要更改JRE,并且没有破坏依赖于BigInteger的其他包的风险


但是,如果您有一个使用BigInteger的第三方软件包,并且出于某种原因(请仔细考虑),您希望切换其下的实现,那么认可的机制可能就是您所需要的。

您几乎没有理由希望与您的包交换Java中的BigInteger,除非您完全确定它不仅在所有相关情况下都更快,而且对于所有依赖于原始BigInteger的程序都是安全的,并且在内部不会与Java冲突(在某种程度上,甚至开发人员可能都不会注意到)

如果以上所有的都是真的,那么你真的要把你的类提交给Oracle,因为我确信他们一直在寻找更高效的实现,也许你可以通过在Java 7或8中发布更快的BigInteger类来帮助我们

但既然您说您“可能”只找到了更快的实现,那么您真正想要的是一个子类:

public class FastBigInteger extends java.math.BigInteger
{
覆盖所有你认为可以加速的方法

    public BigInteger divide(BigInteger val)
    {
        //your faster implementation goes here
    }
}

然后,您可以开始针对java的类测试这个类,为许多测试用例计算每个类的运行时间,并将结果呈现给Oracle。

您几乎没有理由希望在java中与自己的类交换BigInteger,除非您完全确定它不仅在所有相关的情况下都更快,但是对于所有依赖于原始BigInteger的程序来说也是安全的,并且在内部不会与Java发生冲突(在某种程度上,甚至开发人员可能都不会注意到)

如果以上所有的都是真的,那么你真的要把你的类提交给Oracle,因为我确信他们一直在寻找更高效的实现,也许你可以通过在Java 7或8中发布更快的BigInteger类来帮助我们

但既然您说您“可能”只找到了更快的实现,那么您真正想要的是一个子类:

public class FastBigInteger extends java.math.BigInteger
{
覆盖所有你认为可以加速的方法

    public BigInteger divide(BigInteger val)
    {
        //your faster implementation goes here
    }
}

然后,您可以开始针对java的类测试这个类,为许多测试用例计算每个类的运行时间,并将结果呈现给Oracle。

您所说的“更改”是什么意思?是否要将其子类化,或使用与BigInteger相同的名称创建不同的类?请使用java的
-Xbootclasspath/p
选项;顺便说一句,请确保您的类没有final字段,这对于创建大量非常短命对象的类来说是适得其反的。@bestsss:您是否与此断言的解释有关联(final会做坏事)?@Paŭlo,它不会做坏事,但会发出内存障碍。所以,如果你能在一个循环中进行高强度的计算,这是完全无用的。我可以寻找一些链接,但我想你可以相信我。@Paŭlo,记得一个链接,但它是一个视频:D这是一个采访w/热点架构师:大约20分钟或跳跃我想在你的博客中你已经看到了一些替代语言,如JRuby和Clojure。是什么