草庐IT

OPTIMIZATION

全部标签

java - 转换在 Java 中需要多少处理和内存使用?

我正在考虑是否有两个指针更好,一个用于每个对象子类和父类(superclass),或者我是否应该只使用转换。这使用了多少系统资源:objectName.functionOne();((SubClass)objectName).functionOther();是否优于:SuperClassobjectA=(SuperClass)getSameInstance();SubClassobjectB=getSameInstance();objectA.functionOne();objectB.functionOther();基本上,我的主要问题是关于转换使用的资源,而不是制作额外的指针。似乎

java - 拍摄优化 JVM 运行时的快照

我知道JVM可以在运行时进行一些非常重要的优化,尤其是在-server模式下。当然,JVM稳定下来并达到最佳性能需要一点时间。有什么方法可以拍摄这些优化的快照,以便在您下次运行您的应用时立即应用它们?“嘿JVM!优化我的代码做得很好。你能帮我写下来以备后用吗?” 最佳答案 Sun的VM基本上还没有,但他们已经考虑好了。在此处查看各种帖子/评论:http://blogs.oracle.com/fatcatair/category/Java(抱歉:我找不到关于在重新启动时保留统计信息以立即对已知热启动方法进行C1编译的正确方法。)但我不

java - Java 如何让低效代码运行得比高效代码更快?

在下面的代码片段中,Foo1是一个每次调用方法bar()时都会递增计数器的类。Foo2做同样的事情,但多了一个间接级别。我希望Foo1比Foo2快,但在实践中,Foo2始终比Foo1。JVM如何优化代码,使Foo2比Foo1运行得更快?一些细节测试是使用java-serverCompositionTest执行的。使用java-clientCompositionTest运行测试产生了预期的结果,即Foo2比Foo1慢。切换循环的顺序没有什么不同。在sun和openjdk的JVM上使用java6验证了结果。代码publicclassCompositionTest{privatestatic

java - 在字节数组上进行右位旋转/循环移位的最快方法是什么

如果我有数组:{01101111,11110000,00001111}//{111,240,15}位移1的结果是:{10110111,11111000,00000111}//{183,248,7}数组大小不固定,会从1到7移动。目前我有以下代码(工作正常):privatestaticvoidshiftBitsRight(byte[]bytes,finalintrightShifts){assertrightShifts>=1&&rightShifts>rightShifts)|((bytes[bytes.length-1]&0xff)>rightShifts)|((previousBy

java - 计算一系列数字的 LCM 的最有效算法是什么?

我环顾四周,发现其他有答案的问题,但没有一个解决这个特定问题的范围,包括thisquestion,还有thisone.我必须以高效的方式计算大范围数字的LCM。我没有太深入地研究那些其他问题,因为它们不处理与该算法必须处理的数字范围一样大的数字范围。我现在得到的代码可以在大约90秒内计算出1到350000之间每个数字的LCM。(结果数字长约76000个十进制数字)。我希望最终能够将它扩展到数百万甚至数十亿个元素的范围内。它最终可能会被并行化。对于某些算法,这一点都不难,对于其他算法,它会更棘手(例如,如果该算法使用当前生成的LCM来计算其计算的其他部分的素数)这里是:publicsta

java - 对于互斥条件,多个 "if"语句与 "if else if"之间是否存在性能差异?

我很好奇Java是如何对条件互斥的多个“if”语句进行优化的,但是我自己没有知识去分析。问题基本上是这个问题的Java版本Performancedifferenceof"ifif"vs"ifelseif"我已经看到这个问题是针对return的if语句回答的,但是这个问题是针对if语句的,它们具有互斥条件但不'返回。1。多个if语句if(x==0)doSomething();if(x==2)doSomething();if(x==5)doSomething();2。链式If-else语句if(x==0)doSomething();elseif(x==2)doSomething();els

Java代码优化会导致数值不正确和错误

我正在尝试在Java中实现FuzzyC-Meansalgorithm的版本,并且试图通过仅计算一次就可以计算一次的所有内容来进行一些优化。这是一个迭代算法,关于矩阵的更新,像素x聚类隶属矩阵U(一行中的值之和必须为1.0),这是我要优化的更新规则:其中x是矩阵X(像素x特征)的元素,而v属于矩阵V(簇x特征)。m是范围从1.1到infinity的参数,而c是簇的数量。使用的距离是欧几里得范数。如果我必须以平庸的方式来实现此公式,则可以执行以下操作:for(inti=0;i这样就已经完成了一些优化,我预先计算了X和V之间的所有可能的平方距离,并将它们存储在矩阵D中,但这还不够,因为我循环

java - 现代 JVM 是否优化了简单的内联匿名类分配?

我今天收到一个代码审查评论,将这个匿名类提取到一个字段中,以避免一遍又一遍地分配它:Collections.transform(newFunction(){Barapply(Foofoo){//dosomesimplelocaltransformoffoointoaBar.}});我回答说“没关系,JVM优化了”。虽然我确实知道这种“优化”不会以任何方式影响性能,而且我认为代码可内联访问的附加值是值得的,但我很好奇我对JVM优化的看法是否正确。所以,我的问题是-提议的重构绝对是空操作,因为JVM无论如何都会对其进行优化,或者这里是否存在一些微小的理论性能增益?

java - 为什么 JVM 在繁忙的自旋暂停后显示相同代码块的更多延迟?

下面的代码演示了问题明确,即:Theexactsameblockofcodebecomesslowerafterabusyspinpause.请注意,我当然没有使用Thread.sleep.另请注意,没有条件导致HotSpot/JIT去优化,因为我正在使用数学运算而不是IF更改暂停。.有一个我想要计时的数学运算block。首先,我在开始测量之前对block暂停1纳秒进行计时。我这样做了20,000次。然后我将暂停从1纳秒更改为5秒,并像往常一样继续测量延迟。我这样做了15次。然后我打印最后30个测量值,因此您可以看到15个测量值的暂停时间为1纳秒,以及15个测量值的暂停时间为5秒。正如

java - 在 Java 中下载文件时的合理缓冲区大小

使用Java传输(无论UP/DOWN)大文件(3-4GB)时,合理的缓冲区大小是多少?bytebuf[]=newbyte[1024]或bytebuf[]=newbyte[5*1024*1024]有时,即使您使用大缓冲区并传递给read(bytearray[])方法,这也不能保证您将获得完整的5me缓冲区。在我的测试中,我观察到每次read()调用的平均大小通常为1.5kb。这在性能方面有意义吗?如果有人能指出我更详细地讨论这个问题的资源,我会很高兴。 最佳答案 听起来您正在从网络连接(TCP?)读取数据1500字节是默认以太网MTU