小编med*_*380的帖子

Java 6和7之间有什么区别会导致性能问题?

我对Java 7的一般经验告诉我它比Java 6更快.但是,我遇到了足够的信息让我相信并非总是如此.

第一部分信息来自此处的 Minecraft Snooper数据.我的目的是查看这些数据,以确定用于发射Minecraft的不同开关的效果.例如,我想知道使用-Xmx4096m是否对性能产生负面或正面影响.在我到达那里之前,我查看了正在使用的不同版本的Java.它涵盖了从1.5到使用1.8的开发人员的所有内容.通常,当您增加java版本时,您会看到fps性能的提高.在1.6的不同版本中,您甚至可以看到这种渐进的趋势.老实说,我并不期待看到尽可能多的不同版本的Java,但我想人们不会像他们应该那样运行更新.

在1.6的后期版本中,您可以获得最高的偷看率.1.7在1.6的后续版本中平均执行大约10fps但仍然高于1.6的早期版本.在我自己的系统中的样本中,几乎不可能看到差异,但是当看到更广泛的样本时,它是清楚的.

为了控制某人可能找到了Java的魔术开关的可能性,我只能通过查看没有传递开关的数据来控制.这样,在我开始查看不同的标志之前,我会有一个合理的控制.

我驳回了我所看到的大部分内容,因为这可能是某些Magic Java 6,有人不与我分享.

现在我一直在研究另一个需要我在InputStream中传递数组以便由另一个API处理的项目.最初我使用了ByteArrayInputStream,因为它可以开箱即用.当我查看代码时,我注意到每个函数都是同步的.由于这个项目没有必要,我重新编写了一个同步剥离.然后我决定在这种情况下想知道同步的一般成本对我来说是什么.

我嘲笑了一个简单的测试只是为了看.我使用System.nanoTime()计算了所有内容,并使用了Java 1.6_20 x86和1.7.0-b147 AMD64,以及1.7_15 AMD64并使用了-server.我预计AMD64版本仅基于架构表现优异,并且具有java 7的优势.我还看了第25,第50和第75百分位数(蓝色,红色,绿色).然而1.6没有服务器击败了其他任何配置的裤子. 图形

所以我的问题是.1.6 -server选项中影响性能的是什么,在1.7中默认为默认值?

我知道1.7中的大部分速度增强来自1.6中的一些更激进的性能选项,但其中一个导致性能差异.我只是不知道要看哪些.

public class ByteInputStream extends InputStream {

public static void main(String args[]) throws IOException {
    String song = "This is the song that never ends";
    byte[] data = song.getBytes();
    byte[] read = new byte[data.length];
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    ByteInputStream bis = new ByteInputStream(data);

    long startTime, endTime;

    for (int i = 0; i < 10; i++) {
        /*code for …
Run Code Online (Sandbox Code Playgroud)

java performance inputstream

25
推荐指数
1
解决办法
1万
查看次数

标签 统计

inputstream ×1

java ×1

performance ×1